求助!80分,#8和#10 WA

P1434 [SHOI2002] 滑雪

Fuyuxin @ 2021-04-03 12:08:06

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int r,c,h[101][101],m[101][101],l,dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};
int cnt(int x,int y){
    if(m[x][y]) return m[x][y];
    if(x>0&&x<=r&&y>0&&y<=c){
        for(int i=0;i<4;i++)
            if(h[x+dx[i]][y+dy[i]]<h[x][y])
                m[x][y]=max(m[x][y],cnt(x+dx[i],y+dy[i])+1);
    }
    else return 0;
    return m[x][y];
}
int main()
{
    cin>>r>>c;
    memset(h,-1,sizeof(h));
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            cin>>h[i][j];
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            l=max(l,cnt(i,j));
    cout<<l;
    return 0;
}

by 行级额年 @ 2021-04-05 15:35:30

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int r,c,h[101][101],m[101][101],l,dx[4]= {-1,0,0,1},dy[4]= {0,-1,1,0};
int cnt(int x,int y) {
    if(m[x][y]) return m[x][y];
    for(int i=0; i<4; i++) {
        if(x+dx[i]>0&&x+dx[i]<=r&&y+dy[i]>0&&y+dy[i]<=c)
            if(h[x+dx[i]][y+dy[i]]<h[x][y])
                m[x][y]=max(m[x][y],cnt(x+dx[i],y+dy[i])+1);
    }
//  else return 0;
    return m[x][y];
}
int main() {
    cin>>r>>c;
    memset(h,-1,sizeof(h));
    for(int i=1; i<=r; i++)
        for(int j=1; j<=c; j++)
            cin>>h[i][j];
    for(int i=1; i<=r; i++)
        for(int j=1; j<=c; j++)
            l=max(l,cnt(i,j));
    cout<<l+1;
    return 0;
}```cpp

by Fuyuxin @ 2021-04-10 08:49:56

@行级额年 好的懂了谢谢!!!


|