Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 8031 | Accepted: 3625 |
Description
Input
Output
Sample Input
3 6 HFDFFB AJHGDH DGAGEH
Sample Output
6
题意很简单:就是在一个矩形的字符阵中寻找一个没有重复的的字符的字符序列,方向只有四个方向,求这个序列字符个数
解题思路:从每一个位置开始搜索一下,在每一个位置递归进去,运用回溯就可以满足了
然后实现代码,其实很简单,可以和我的另外一篇blog对比一下http://blog.csdn.net/summer__show_/article/details/51146603
都是连通分量求最大值
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int R,C; char visit[25][25]; int temp[100]; int dx[]={0,0,1,-1}; int dy[]={1,-1,0,0}; int ans,coun; int dfs(int x,int y) { for(int i=0;i<4;i++){ int tempx=x+dx[i]; int tempy=y+dy[i]; if(tempx>=0&&tempy>=0&&tempx<R&&tempy<C&&temp[visit[tempx][tempy]]==0){ temp[visit[tempx][tempy]]=1; coun++; dfs(tempx,tempy); ans=max(ans,coun); temp[visit[tempx][tempy]]=0;//回溯 coun--; } } } int main() { while(scanf("%d%d",&R,&C)!=EOF) { getchar(); for(int i=0;i<R;i++) scanf("%s",visit[i]); memset(temp,0,sizeof(temp)); ans=coun=1; temp[visit[0][0]]=1; dfs(0,0); printf("%d\n",ans); } return 0; }