50分求助
  • 板块学术版
  • 楼主A_Noob
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/9/28 21:44
  • 上次更新2023/10/27 09:36:10
查看原帖
50分求助
549293
A_Noob楼主2022/9/28 21:44

P1434

记录

#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
int a[105][105], f[105][105];
int dx[] = { 1,0,-1,0 };
int dy[] = { 0,1,0,-1 };
int dfs(int x, int y) {
	if (f[x][y] != 0) {
		return f[x][y];
	}
	f[x][y] = 1;
	for (int i = 0; i < 4; i++) {
		int xx = x + dx[i];
		int yy = y + dy[i];
		if (xx > n || yy > m || xx < 1 || y < 1)continue;
		if (a[x][y] <= a[xx][yy])continue;
		dfs(xx, yy);
		f[x][y] = max(f[x][y], f[xx][yy] + 1);
	}
	return f[x][y];
}
int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> a[i][j];
		}
	}
	int maxn = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			maxn = max(maxn, dfs(i, j));
		}
	}
	cout << --maxn;
}
2022/9/28 21:44
加载中...