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 哇我这个智障。。
谢谢好人