暴力dfs错掉了第四个点(WA) 有人可以帮我看看有什么问题吗
查看原帖
暴力dfs错掉了第四个点(WA) 有人可以帮我看看有什么问题吗
326985
Kosuzu2020楼主2020/6/30 17:56
#include <stdio.h>
#pragma warning(disable:4996)
using namespace std;
int hei[105][105],i,j;
int max, r, c;
int dx[] = { 0,0,-1,1 };
int dy[] = { 1,-1,0,0 };
void dfs(int x, int y, int depth)
{
	int i;
	if (x < 0 || y < 0 || x >= r || y >= c)
		return;
	int xx, yy;
	for (i = 0; i < 4; i++)
	{
		xx = x + dx[i];
		yy = y + dy[i];
		if (xx >= 0 && xx < r && yy >= 0 && yy < c)
		{
			if (hei[xx][yy] > hei[x][y])
				dfs(xx, yy, depth + 1);
			else
			{
				if (depth > max)
					max = depth;
			}
		}
	}
}
int main()
{
	scanf("%d%d", &r, &c);
	for (i = 0; i < r; i++)
		for (j = 0; j < c; j++)
			scanf("%d", &hei[i][j]);
	for (i = 0; i < r; i++)
		for (j = 0; j < c; j++)
			dfs(i, j, 1);
	printf("%d\n", max);
	return 0;
}

代码是这个样子的,和题解里的记忆化dfs差的有点多,存储长度的方法可能有点奇奇怪怪……但是第四个点不太应该有问题?有人可以帮我看一下吗?

2020/6/30 17:56
加载中...