解题思路: 因为涉及到回溯找最长的 所以最好用dfs递归
注意事项: 多练就行了 没啥注意的
参考代码:
/* 3 6 HFDFFB AJHGDH DGAGEH */ #include<iostream> #include<cstring> using namespace std; const int N=100; int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0}; char s[N][N]; int n,m,a[N],sum=0; void dfs(int x,int y,int k) { sum=max(sum,k); for(int i=0;i<4;i++) { int xx=x+dx[i]; int yy=y+dy[i]; if(xx>0&&yy>0&&xx<=n&&yy<=m&&a[s[xx][yy]]!=1) { a[s[xx][yy]]=1; dfs(xx,yy,k+1); a[s[xx][yy]]=0; } } } int main(void) { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>s[i][j]; a[s[1][1]]=1; dfs(1,1,1); cout<<sum<<endl; return 0; }
0.0分
1 人评分
简单的a+b (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:806 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5275 |
【矩阵】 (C++代码)浏览:999 |
1014题解浏览:524 |
蚂蚁感冒 (C语言代码)浏览:816 |
简单的a+b (C语言代码)浏览:1024 |
整数平均值 (C语言代码)浏览:856 |
敲七 (C++代码)浏览:1119 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:820 |