LaoXu666 @ 2023-02-11 11:04:15
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
int cnt=0,maxcnt=0x8000000000000000;
int h[105][105],r,c;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,-1,1};
void dfs(int x,int y){
cnt++;
//bool flag=false;
for(int i=0;i<4;i++){
int xx=x+dx[i];
int yy=y+dy[i];
if(xx>0 && yy>0 && xx<r && yy<c && h[xx][yy]<h[x][y]){
//flag=true;
dfs(xx,yy);
cnt--;
}
else{
if(cnt>maxcnt){
maxcnt=cnt;
//return;
}
}
}
}
signed main(){
//;
cin>>r>>c;
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
cin>>h[r][c];
}
}
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
dfs(i,j);
}
}
cout<<maxcnt;
}
第2、3、4点AC,其他WA
by A_Learning_Hornet @ 2023-02-11 12:27:24
看一下我这个,评测了,100分AC。
#include<bits/stdc++.h>
using namespace std;int x[5]={0,-1,0,1,0},y[5]={0,0,1,0,-1},r,c,i,j,p,t,n=0,m[101][101],f[101][101];int se(int,int);
int main(){
cin>>r>>c;
for(i=1;i<=r;i++)
for(j=1;j<=c;j++)
cin>>m[i][j];
for(i=1;i<=r;i++)
for(j=1;j<=c;j++){
t=se(i,j);f[i][j]=t;
if(t>n)n=t;
}
cout<<n;
}
int se(int l,int k){
int i,t=1,e,b,d;
if(f[l][k]>0)return(f[l][k]);
for(i=1;i<=4;i++){
b=l+x[i];d=k+y[i];
if((b>0)&&(b<=r)&&(d>0)&&(d<=c)&&(m[l][k]<m[b][d])){
e=se(b,d)+1;
if(e>t)t=e;
}
}
f[l][k]=t;
return t;
}