90分求调,#2超时了
查看原帖
90分求调,#2超时了
1469663
San_yu楼主2025/1/14 15:08
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int r, c, ans;
int snow[110][110];

int dx[4] = {0,0,-1,1 };
int dy[4] = { -1,1,0,0};
bool legal(int x, int y) {
	return(x >= 1 && x <= r && y >= 1 && y <= c);
}
void dfs(int nowx, int nowy, int len) {
	ans = max(ans, len);
	
	for (int i = 0; i < 4; i++) {
		int nx = nowx + dx[i], ny = nowy + dy[i];
		if ((snow[nx][ny] < snow[nowx][nowy]) && legal(nx, ny) ){
			dfs(nx, ny, len + 1);
		}
	}
}
int main()
{
	cin >> r >> c;
	for (int i = 1; i <= r; i++) {
		for (int j = 1; j <= c; j++)
			cin >> snow[i][j];
	}
	for (int j = 1; j <= r; j++) {
		for (int k = 1; k <= c; k++) {
			dfs(j, k, 1);
		}
	}
	cout << ans;
	return 0;
}
2025/1/14 15:08
加载中...