📄 1871221_ac_15ms_144k.c
字号:
#include <stdio.h>
int a[101][101], R, C, way[101][101], mark[101][101] = { 0 };
void search(const int r, const int c)
{
if (r - 1 >= 0 && a[r - 1][c] < a[r][c])
{
if (!mark[r - 1][c])
{
mark[r - 1][c] = 1;
search(r - 1, c);
}
if (way[r][c] < way[r - 1][c] + 1)
way[r][c] = way[r - 1][c] + 1;
}
if (c - 1 >= 0 && a[r][c - 1] < a[r][c])
{
if (!mark[r][c - 1])
{
mark[r][c - 1] = 1;
search(r, c - 1);
}
if (way[r][c] < way[r][c - 1] + 1)
way[r][c] = way[r][c - 1] + 1;
}
if (c + 1 < C && a[r][c + 1] < a[r][c])
{
if (!mark[r][c + 1])
{
mark[r][c + 1] = 1;
search(r, c + 1);
}
if (way[r][c] < way[r][c + 1] + 1)
way[r][c] = way[r][c + 1] + 1;
}
if (r + 1 < R && a[r + 1][c] < a[r][c])
{
if (!mark[r + 1][c])
{
mark[r + 1][c] = 1;
search(r + 1, c);
}
if (way[r][c] < way[r + 1][c] + 1)
way[r][c] = way[r + 1][c] + 1;
}
}
int main()
{
int i, j, min;
scanf("%d %d", &R, &C);
min = 0;
for(i = 0; i < R; ++i)
for(j = 0; j < C; ++j)
{
scanf("%d", &a[i][j]);
way[i][j] = 1;
}
for (i = 0; i < R; ++i)
for (j = 0; j < C; ++j)
{
if (!mark[i][j])
{
mark[i][j] = 1;
search(i, j);
}
if (min < way[i][j])
min = way[i][j];
}
printf("%d\n", min);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -