wa*2求助
查看原帖
wa*2求助
251074
学习柯学楼主2022/7/19 20:40
#include<iostream>
#include<cmath>
using namespace std;
int n, m, a[105][105], b[105][105],f[105][105], i, j, ans;
int dfs(int x, int y)
{
	int mmax = -1;
	if (f[x][y])
		return b[x][y];
	else {
		if (a[x + 1][y] != 0 && a[x + 1][y] < a[x][y] && x + 1 != n + 1)
			mmax=max( dfs(x + 1, y) + 1, mmax);
		if (a[x - 1][y] != 0 && a[x - 1][y] < a[x][y] && x - 1 != n + 1)
			mmax = max(dfs(x - 1, y) + 1, mmax);
		if (a[x][y + 1] != 0 && a[x][y + 1] < a[x][y] && y + 1 != m + 1)
			mmax = max(dfs(x, y + 1) + 1, mmax);
		if (a[x][y - 1] != 0 && a[x][y - 1] < a[x][y] && y - 1 != m + 1)
			mmax = max(dfs(x, y - 1) + 1, mmax);
		if (mmax == -1)
			mmax = 1;
		b[x][y] = mmax;
		f[x][y] = 1;
		return b[x][y];
	}
}
int main() {
	cin >> n >> m;
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= m; j++)
		{
			cin >> a[i][j];
		}
	}
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= m; j++)
		{
			ans = max(dfs(i,j), ans);
		}
	}
	cout << ans;
	return 0;
}

第五个点和第七个点wa了。。。。

2022/7/19 20:40
加载中...