关于dfs的MLE问题
查看原帖
关于dfs的MLE问题
307483
苏黎世楼主2020/10/22 19:53

评测记录

人生第一次搜索的题它MLE ?

看看dfs能有什么优化吧,可能是栈空间炸了

实在不行就要转行bfs了真的麻烦啊

#include<cstdio>
#include<cmath>
#define intt register int
using namespace std;
//MLE ???
int m[105][105], r, c, ans, vis[105][105];
int d[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
inline int max(int x, int y)
{
	return x > y ? x : y;
}
inline void dfs(int x, int y, int sum)
{
	vis[x][y] = vis[x][y] > sum ? vis[x][y] : sum;
	ans = ans > sum ? ans : sum;
	int _x, _y;
	for(intt i = 0;i < 4; ++i)
	{
		_x = x + d[i][0]; _y = y + d[i][1];
		if(_x >= 1 and _x <= r and _y >= 1 and _y <= c and vis[_x][_y] <= vis[x][y] and m[x][y] >= m[_x][_y])
		  dfs(_x, _y, sum + 1);
	}
}

int main()
{
	scanf("%d%d", &r, &c);
	for(intt i = 1;i <= r; ++i)
	  for(intt j = 1;j <= c; ++j)
	    scanf("%d", &m[i][j]);
	
	for(intt i = 1;i <= r; ++i)
	  for(intt j = 1;j <= c; ++j)
	    dfs(i, j, 1);

	printf("%d", ans);
	return 0;
}
2020/10/22 19:53
加载中...