| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
forget backtrack?In Reply To:这也有错,晕啊! Posted by:ylshtfa at 2007-12-26 22:28:37 > #include<iostream>
> using namespace std;
> char a[23][23];
> int large=0;
> void DFS(int i,int j,int counter,bool c[],bool visit[][23])
> {
> if(!c[a[i][j]-'A'+1])
> c[a[i][j]-'A'+1]=true;
> if(counter>large)
> large=counter;
> if(counter>large)
> large=counter;
> if(!visit[i+1][j] && !c[a[i+1][j]-'A'+1] && a[i+1][j]>='A' && a[i+1][j]<='Z')
> DFS(i+1,j,counter+1,c,visit);
> if(!visit[i-1][j] && !c[a[i-1][j]-'A'+1] && a[i-1][j]>='A' && a[i-1][j]<='Z')
> DFS(i-1,j,counter+1,c,visit);
> if(!visit[i][j+1] && !c[a[i][j+1]-'A'+1] && a[i][j+1]>='A' && a[i][j+1]<='Z')
> DFS(i,j+1,counter+1,c,visit);
> if(!visit[i][j-1] && !c[a[i][j-1]-'A'+1] && a[i][j-1]>='A' && a[i][j-1]<='Z')
> DFS(i,j-1,counter+1,c,visit);
> return;
> }
> int main()
> {
> int r,s;
> bool visit[23][23];
> bool c[27];
> memset(c,false,sizeof(c));
>
> scanf("%d %d",&r,&s);
> while(getchar()!='\n');
> for(int i=0;i<=21;i++)
> for(int j=0;j<=21;j++)
> {
> a[i][j]=0;
> visit[i][j]=true;
> }//init
> for(int i=1;i<=r;i++)
> {
> for(int j=1;j<=s;j++)
> {
> scanf("%c",&a[i][j]);
> visit[i][j]=false;
> }
> while(getchar()!='\n');
> }
> DFS(1,1,1,c,visit);
> printf("%d\n",large);
> system("pause");
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator