一个if语句放置的位置不同,结果也不相同
查看原帖
一个if语句放置的位置不同,结果也不相同
493488
Xiaodengzi楼主2022/10/3 23:24

代码中有两个(一个已经注释起来了)

if(f[x][y]>result)result = f[x][y];

我感觉这个if语句放在这两个地方都可以,但结果不同。不知道是什么特殊情况没考虑到。。。大佬们帮帮忙

#include <iostream>
#include <algorithm>
using namespace std;

const int N = 220;
int d[N][N],f[N][N];//d是接受的数据,f是dfs过程存储的数据
int r,c;//长,宽
int dx[4] = {-1,0,1,0},dy[4] = {0,-1,0,1};
int result = -1e9;

void dfs(int x,int y){
	if(f[x][y])return;
	f[x][y] = 1;
	
	for(int i=0;i<4;i++){
		int xx = x+dx[i];
		int yy = y+dy[i];
		
		if(xx>0&&xx<=r&&yy>0&&yy<=c&&d[x][y]>d[xx][yy]){
			dfs(xx,yy);
			f[x][y] = max(f[x][y],f[xx][yy]+1);
//			if(f[x][y]>result)result = f[x][y];//if语句放在这里会有2个WA
		}	
	}
	if(f[x][y]>result)result = f[x][y];//if语句放在这里可以过
	return;
}

int main(){
	
	
	cin>>r>>c;
	for(int i=1;i<=r;i++)
		for(int j=1;j<=c;j++)
			cin>>d[i][j];
			

	
	for(int i=1;i<=r;i++)
		for(int j=1;j<=c;j++)
			dfs(i,j);
	
	cout<<result;
	
	return 0;
} 
2022/10/3 23:24
加载中...