求助!

P1434 [SHOI2002] 滑雪

2017gangbazi @ 2018-01-28 18:19:40

#include<iostream>
#include<algorithm>
using namespace std;
int h[1001][1001];
int dx[5]={0,0,0,1,-1};
int dy[5]={0,1,-1,0,0};
struct node{
    int x,y,high;
}w[1000001];
int cmp(node a,node b)
{
    return a.high<b.high;
}
int m,n;
int dp[10001][10001];
int main()
{
    cin>>m>>n;
    int g=0;
    for(int i=1;i<=m;i++)
      for(int j=1;j<=n;j++)
    cin>>h[i][j],w[++g].high=h[i][j],w[g].x=i,w[g].y=j,dp[i][j]=1;
    sort(w+1,w+(m*n+1),cmp);
    int ans=0;
    for(int i=1;i<=g;i++)
    {
        //cout<<w[i].x<<w[i].y<<w[i].high<<endl;
        for(int j=1;j<=4;j++)
        {
            if(w[i].x+dx[j]>n||w[i].x+dx[j]<0)continue;
            if(w[i].y+dy[j]>m||w[i].y+dy[j]<0)continue;
            if(h[w[i].x+dx[j]][w[i].y+dy[j]]>=h[w[i].x][w[i].y])continue;
            dp[w[i].x][w[i].y]=max(dp[w[i].x+dx[j]][w[i].y+dy[j]]+1,dp[w[i].x][w[i].y]);
        }

        ans=max(ans,dp[w[i].x][w[i].y]);
    }
    cout<<ans;
}
/*
10 5
56 14 51 58 88
26 94 24 39 41
24 16  8 51 51
76 72 77 43 10
38 50 59 84 81
 5 23 37 71 77
96 10 93 53 82
94 15 96 69  9
74  0 62 38 96
37 54 55 82 38*/

附带的这组数据错了。。

到底哪里错了。。?

求巨牛


by Dog_Two @ 2018-01-28 19:28:20

我用递归写的……

你这个我看不太懂_(:зゝ∠)_


by qwqKanade @ 2018-01-28 19:33:38

@2017gangbazi 30 31 行 n,m 反了


by 2017gangbazi @ 2018-01-29 07:02:03

@Dog_Two 我代码总是超级奇怪但总是错 哈哈


by 2017gangbazi @ 2018-01-29 07:03:40

@v天下第柒v 哇我这个智障。。

谢谢好人


|