那位大佬能给个数据吗,第二个和最后一个点wa了。

P1434 [SHOI2002] 滑雪

LighTeers @ 2019-05-23 16:55:23

这里是代码

#include<bits/stdc++.h>
#define f(i,m,n) for(int i=m;i<=n;i++)
#define N 100+5
using namespace std;
struct note{ int x,y,sum; }p[N*N];
int f[N][N],h,gc[N][N],r,c,ans=-1;
int dire[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
bool cmp(note a,note b){ return a.sum>b.sum; }
int main()
{
    scanf("%d%d",&r,&c);
    f(i,1,r)f(j,1,c)
    {
        scanf("%d",&gc[i][j]);f[i][j]=1;     //收集数据,p[]数组收集每个点的坐标和大小。 
        h++;p[h].x=i,p[h].y=j,p[h].sum=gc[i][j];
    }
    sort(p+1,p+1+h,cmp);      //根据p[].sum数据从大到小排序。 
    f(i,1,h)
    {
        int nx=p[i].x,ny=p[i].y;
        f(j,0,3)
        {
            int gx=nx+dire[j][0],gy=ny+dire[j][1];//从大到小,将每一个点周围四个点作比较,若周围数据较大,则进行动态规划。 
            if(gc[gx][gy]>gc[nx][ny])f[nx][ny]=max(f[nx][ny],f[gx][gy]+1);//动态规划 
        }
        ans=max(ans,f[nx][ny]);  //动态规划 
    }
    printf("%d\n",ans);
    return 0;
}

by LighTeers @ 2019-05-23 16:58:42

或者说能直接说出错误在哪里最好。


by 良辰、 @ 2019-05-23 18:23:21

可以自己下载数据鸭鸭鸭qwq


by LighTeers @ 2019-05-24 09:10:04

@良辰、 数据下载不了啊。能不能看下代码有没有bug。


|