人生第一次搜索的题它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;
}