fork download
  1. int arr[51][51],mark[51][51],h,w;
  2. int fun(char c, int a, int b)
  3. { int k,l,q=0,Max=0;
  4. for (k=-1;k<=1;k++)
  5. for (l=-1;l<=1;l++)
  6. {
  7. if (a+k>=0 && a+k<h && b+l>=0 && b+l<w && !(k==0 && l==0))
  8. { if (arr[a+k][b+l]==c+1 && (mark[a+k][b+l]==0)) q=fun(c+1,a+k,b+l);
  9. else q=c+1-'A';
  10. if (q>Max) Max=q;
  11. }
  12. }
  13. mark[a][b]=1;
  14.  
  15. return Max;
  16. };
  17.  
  18. int main()
  19. { int allAs[2][2602];
  20. int i,j,MAX,n,v,x,y,c=1;
  21. char ch;
  22. scanf("%d%d",&h,&w);
  23. while((!(h==0 && w==0)))
  24. { n=0;i=h; while(i--) memset(mark[i],0,4*w);
  25. for(i=0;i<h;i++)
  26. { j=0;
  27. if(i==0) ch=getchar();
  28. do{ if((ch=getchar())=='A'){allAs[0][n]=i; allAs[1][n++]=j;}
  29.  
  30. if(ch!='\n') arr[i][j++]=ch; } while(ch!='\n');
  31. }
  32. MAX=0;
  33. i=-1;
  34. while(i++<n-1)
  35. { v=fun('A', allAs[0][i], allAs[1][i]);
  36. if(MAX<v) MAX=v; }
  37.  
  38. printf("\nCase %d: %d",c++,MAX);
  39.  
  40. scanf("%d%d",&h,&w);
  41. }
  42. return 0;
  43. }
  44.  
  45.  
  46.  
Success #stdin #stdout 0.02s 1744KB
stdin
3 1
B
C
A
3 1
C
B
A
3 3
GRH
TFE
JDG
6 1
A
C
B
D
B
A
4 4
DHJD
DGDH
SHXR
YFHR
8 1
C
B
B
A
C
B
D
A
2 1
B
B
3 3
AAA
AAA
AAA
4 4
BBBB
BBBB
BBBB
BBBB
3 3
ABC
CBA
BAC
0 0
stdout
Case 1: 1
Case 2: 3
Case 3: 0
Case 4: 2
Case 5: 0
Case 6: 2
Case 7: 0
Case 8: 1
Case 9: 0
Case 10: 3