| 比赛 |
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;
}