2 條題解
-
2
#include<bits/stdc++.h> using namespace std; int cnt,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1}; char a[11][11]; bool check(int x,int y){ return 1<=x&&x<=5&&1<=y&&y<=5; } set<string> s; void dfs(int x,int y,int dep,string an){ an+=a[x][y]; if(dep==6){ if(!s.count(an)){ s.insert(an); cnt++; } return; } for(int i=0;i<4;i++){ int nx=x+dx[i],ny=y+dy[i]; if(check(nx,ny)){ dfs(nx,ny,dep+1,an); } } return; } int main(){ for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ cin>>a[i][j]; } } for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ dfs(i,j,1,""); } } cout<<cnt; return 0; } -
1
#include<bits/stdc++.h> using namespace std; int cnt,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1}; char a[11][11]; bool check(int x,int y){ return 1<=x&&x<=5&&1<=y&&y<=5; } set<string> s; void dfs(int x,int y,int dep,string an){ an+=a[x][y]; if(dep==6){ if(!s.count(an)){ s.insert(an); cnt++; } return; } for(int i=0;i<4;i++){ int nx=x+dx[i],ny=y+dy[i]; if(check(nx,ny)){ dfs(nx,ny,dep+1,an); } } return; } int main(){ for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ cin>>a[i][j]; } } for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ dfs(i,j,1,""); } } cout<<cnt; return 0; }
- 1
資訊
- ID
- 311
- 時間
- 1000ms
- 記憶體
- 16MiB
- 難度
- 9
- 标签
- 遞交數
- 13
- 已通過
- 4
- 上傳者