求助,奇怪的输出
查看原帖
求助,奇怪的输出
324350
xiaomuyun楼主2021/8/18 21:31
#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 帮本蒟蒻看一看问题。

2021/8/18 21:31
加载中...