#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=21;
int w,h,p,c[maxn][maxn],ans=0;
int dh[]={-1,1,0,0},dl[]={0,0,-1,1};
bool vis[maxn][maxn];
void INIT(){
for(int i=0;i<h;++i){//初始化
memset(vis[i],false,sizeof vis[i]);
}
}
void dfs(int h,int l,int cnt){
ans=max(cnt,ans);
vis[h][l]=true;
for(int i=0;i<4;++i){
int nh=h+dh[i];
int nl=l+dl[i];//dfs遍历相邻的格子
if(nh<0||nh>=h||nl<0||nl>=w) continue;
if(vis[nh][nl]) continue;
if(c[h][l]<=c[nh][nl]) continue;
vis[nh][nl]=true;
dfs(nh,nl,cnt+1);//往下深入
}
}
void solve(){
for(register int i=0;i<h;++i)
for(register int j=0;j<w;++j)
scanf("%d",&c[i][j]);
for(register int i=1;i<=p;++i){
register int x,y;
ans=0;
scanf("%d%d",&y,&x);
INIT();
dfs(x,y,1);
printf("%d\n",ans);
}
}
int main(){
while(true){//数据输入
scanf("%d%d%d",&w,&h,&p);
if(!w&&!h&&!p) break;
solve();
}
return 0;
}
这个代码样例都没有过,请各位 dalao 帮本蒟蒻看一看问题。