比赛 26暑假集训模拟赛2 评测结果 AATTTEEEEE
题目名称 and I am home 最终得分 20
用户昵称 2_16鸡扒拌面 运行时间 7.135 s
代码语言 C++ 内存使用 3.51 MiB
提交时间 2026-07-02 10:39:00
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MOD=998244353;
const int N=25;

int n,ans;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
bool vis[N][N];

void dfs(int dep,int x,int y,int cnt)
{
    if(!vis[x][y])
    {
        vis[x][y]=1;
        cnt++;
    }
    if(dep==n)
    {
        ans=(ans+cnt)%MOD;
        return;
    }
    for(int d=0;d<4;d++)
    {
        int nx=x+dx[d],ny=y+dy[d];
        bool flag=vis[nx][ny];
        vis[nx][ny]=1;
        dfs(dep+1,nx,ny,cnt+!flag);
        if(!flag) vis[nx][ny]=0;
    }
}

int main(){
    freopen("home.in","r",stdin);
    freopen("home.out","w",stdout);
    cin>>n;
    vis[12][12]=1;
    for(int d=0;d<4;d++)
    {
        int nx=12+dx[d],ny=12+dy[d];
        vis[nx][ny]=1;
        dfs(1,nx,ny,2);
        vis[nx][ny]=0;
    }
    cout<<ans<<"\n";
    return 0;
}