1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| int step[8] = {1,0,-1,0,0,1,0,-1};
for( int k=0; k<8; k+=2)
```先开始错了一只不知道什么问题,当时num数组定义的num[26]后来发现其实A对应的是num[1]不是num[0]导致Z无法识别,后来改了通过 代码如下:
```cpp
#include <iostream> using namespace std;
int x,y,temp,tempmax,str[100][100],num[27]; int step[8] = {1,0,-1,0,0,1,0,-1};
void DFS(int i, int j) { for( int k=0; k<8; k+=2) { int a = i+step[k]; int b = j+step[k+1]; if(a>=1&&a;<=y&&b;>=1&&b;<=x&&!num[str[a][b]] ) { num[str[a][b]] = 1; temp++; DFS(a,b); if( temp > tempmax ) tempmax = temp; temp--; num[str[a][b]] = 0; } } } int main() { char s[100];
while( cin >> y >> x ) { temp=1,tempmax=1; memset(num,0,sizeof(num)); getchar(); for(int i=1; i<=y; i++) { gets(s); for(int k=1; k<=x; k++) str[i][k] = s[k-1] -'A' + 1; } num[str[1][1]] = 1; DFS(1,1); cout<<tempmax<<endl; }
}
|