Untitled
unknown
c_cpp
4 years ago
963 B
10
Indexable
#include<bits/stdc++.h>
using namespace std;
vector<string> grid;
int h,w;
int dfs(int i,int j,char ch){
if(i>=h or i<0 or j>=w or j<0)
return 0;
if(ch == ('Z' + 1))
return 0;
if(grid[i][j] != ch )
return 0;
int ans = 0;
ch++;
ans = max(dfs(i+1,j,ch),dfs(i,j+1,ch));
ans = max(ans,dfs(i-1,j,ch));
ans = max(ans,dfs(i,j-1,ch));
ans = max(ans,dfs(i+1,j+1,ch));
ans = max(ans,dfs(i-1,j-1,ch));
ans = max(ans,dfs(i-1,j+1,ch));
ans = max(ans,dfs(i+1,j-1,ch));
ans += 1;
return ans;
}
bool solve(int n){
cin>>h>>w;
if(h==0 and w==0)
return false;
grid.resize(h);
for(int i=0;i<h;i++)
cin>>grid[i];
int ans = 0;
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
if(grid[i][j] == 'A')
ans = max(ans,dfs(i,j,'A'));
}
}
cout<<"Case "<<n<<": "<<ans<<endl;
return true;
}
int main() {
// your code goes here
int t;
int num = 1;
while(true){
if(!solve(num))
break;
num++;
}
return 0;
}Editor is loading...