Отримання знань
дистанційна підтримка освіти школярів
Катание на лыжах
Входные данные
Выходные данные
Пример входных данных
Пример выходных данных
Анализ условия и обсуждение идеи решения
Пример решения на C++:
#include "iostream"
#include "math.h"
using namespace std;
int B[4][2]={{0,-1},{-1,0},{0,1},{1,0}};
int flag[101][101]={0};
int A[103][103]={0};
int f(int i,int j)
{ int x,y;
if(flag[i][j]!=0) return flag[i][j];
else {
for(int a=0; a < 4; a++)
{ x=i+B[a][0];
y=j+B[a][1];
if(A[i][j] > A[x][y]) flag[i][j]=max(flag[i][j],f(x,y)+1);
}
if(flag[i][j]==0) flag[i][j]=1;
return flag[i][j];
}
}
int main()
{
int R,C;
scanf("%d%d",&R,&C);
for(int i=0; i <= C+1; i++)
{A[0][i]=10001;A[R+1][i]=10001;}
for(int i=0; i <= R+1; i++)
{A[i][0]=10001;A[i][C+1]=10001;}
for(int i=1; i <= R; i++)
for(int j=1; j <= C; j++)
scanf("%d",&A[i][j]);
int maxn=1;
for(int i=1; i <= R; i++)
for(int j=1; j <= C; j++)
{if(f(i,j) > maxn) maxn=f(i,j);}
printf("%d\n",maxn);
return 0;
}
Попередня | Зміст | Наступна |
В системі:
гості - (1); користувачі -
(0)