比赛 26暑假集训模拟赛2 评测结果 AATEEEEEEE
题目名称 and I am home 最终得分 20
用户昵称 Lixj 运行时间 3.048 s
代码语言 C++ 内存使用 3.41 MiB
提交时间 2026-07-02 12:06:22
显示代码纯文本
#include <iostream>
#include <cstring>
using namespace std;
const int MOD=998244353;
int n;
int vis[30][30];        
int pian;
long long tot=0;
const int dx[4]={1,-1,0,0};
const int dy[4]={0,0,1,-1};
void dfs(int x,int y,int steps,int dist) {
    if(steps==n){
        tot=(tot+dist)%MOD;
        return;
    }
    for(int d=0;d<4;d++){
        int nx=x+dx[d];
        int ny=y+dy[d];
        if(!vis[nx][ny]) 
			dist++;;
        vis[nx][ny]++;
        dfs(nx,ny,steps+1,dist);
        vis[nx][ny]--;
        if (!vis[nx][ny]) 
			dist--;
    }
    return;
}
int main(){
	freopen("home.in","r",stdin);
	freopen("home.out","w",stdout);
    cin>>n;
    pian=n;             
    memset(vis,0,sizeof(vis));
    vis[pian][pian]=1;
    dfs(pian,pian,0,1);   
    cout<<tot;
    return 0;
}