1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int dx[]={1,-1,0,0}; int dy[]={0,0,1,-1}; int r,c,ans; char g[25][25]; //哪些字母被走过了 bool flag[30]; //当前走到了x,y //已经走过了flag这些字母 //当前长度是step void dfs(int x,int y,int step){ ans=max(ans,step); for(int i=0;i<4;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(1<=nx&&nx<=r&& 1<=ny&&ny<=c&& flag[g[nx][ny]-'A']==false) { flag[g[nx][ny]-'A']=true; dfs(nx,ny,step+1); flag[g[nx][ny]-'A']=false; } } } int main() { cin>>r>>c; for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) cin>>g[i][j]; ans=1; flag[g[1][1]-'A']=true; dfs(1,1,1); cout<<ans<<"\n"; return 0; }
- 1
信息
- ID
- 432
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 111
- 已通过
- 44
- 上传者