lin_mine @ 2024-07-11 23:30:57
请大佬指教qwq
#include <bits/stdc++.h>
using namespace std;
int a[101][101],minn=0x3f3f3f3f,maxn=-0x3f3f3f3f,dx[]={0,-1,0,1},dy[]={-1,0,1,0},dp[101][101],mmax=-0x3f3f3f3f;
// a为区域地图,minn和maxn标记最低点和最高点, dx和dy表示方向, dp为路径长度,mmax作为最后输出
int main(){
int r,c;//地图长宽
cin>>r>>c;
memset(a,0x3f3f3f,sizeof a);//初始化
for(int i=1;i<=r;i++)//输入,并标记最低点和最高点
for(int j=1;j<=c;j++){
cin>>a[i][j];
minn=min(minn,a[i][j]);
maxn=max(maxn,a[i][j]);
}
for(int i=minn;i<=maxn;i++)//从最低点开始,到最高点结束
for(int j=1;j<=r;j++)//记录坐标
for(int k=1;k<=c;k++){
if(a[j][k]==i){//如果该点高度与该坐标高度相同
int maax=-0x3f3f3f3f;//用来记录该点的最长路径
for(int i=0;i<4;i++){
int mx=j+dx[i],my=k+dy[i];//可以滑的四个点位的定义
if(a[j][k]>a[mx][my])//如果能滑
dp[j][k]=dp[mx][my]+1;//则该点的路径长度为滑向的点位的长度再加一
maax=max(dp[j][k],maax);//判断最长路径并记录
}
dp[j][k]=maax;//记录最长路径
if(i==minn)//最低点也可以看作是一条长度为一的路经
dp[j][k]++;
mmax=max(mmax,maax);//判断最长路径是否起始于该点
}
}
cout<<mmax<<endl;//输出
return 0;
}
by return_second @ 2024-07-18 20:46:39
是不是MLE
by lin_mine @ 2024-07-31 22:43:15
@return_second #2#10RE #1#4#6WA