#include<bits/stdc++.h>
using namespace std;
char mapp[25][25];
int pd[25][25];
bool letter[26];
int hang,lie,xx,yy,step,maxx=-1;
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
void killerqueen(int x,int y,int step)
{
if(maxx<step) maxx=step;
for(int i=0;i<4;i++)
{
xx=x+dx[i];
yy=y+dy[i];
if(pd[xx][yy]==0 && xx>=0 && xx<hang && yy>=0 && yy<lie && letter[mapp[xx][yy]-'A']==0)
{
pd[xx][yy]=1;
letter[mapp[xx][yy]-'A']=1;
killerqueen(xx,yy,step+1);
pd[xx][yy]=0;
letter[mapp[xx][yy]-'A']=0;
}
}
}
int main()
{
cin>>hang>>lie;
for(int i=0;i<hang;i++)
for(int j=0;j<lie;j++)
cin>>mapp[i][j];
pd[0][0]=1;
letter[mapp[0][0]-'A']=1;
killerqueen(0,0,1);
cout<<maxx;
}
为什么这里xx,yy定义到函数外面就会只得10pts 题目来自这里