ztyx @ 2024-04-22 18:49:58
#include <bits/stdc++.h>
using namespace std;
struct node
{
int x,y,h;
};
vector<node> v;
bool cmp(node x,node y)
{
return x.h<y.h;
}
int dp[105][105],H[105][105];
int dx[5]={0,1,-1,0,0};
int dy[5]={0,0,0,1,-1};
int main()
{
int r,c;
cin >> r >> c;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
node NEW;
NEW.x=i;
NEW.y=j;
cin >> H[i][j];
NEW.h=H[i][j];
v.push_back(NEW);
}
sort(v.begin(),v.end(),cmp);
for(int j=0;j<v.size();j++)
{
for(int i=1;i<=4;i++)
{
if(H[v[j].x][v[j].y]>H[v[j].x+dx[i]][v[j].y+dy[i]])
{
dp[v[j].x][v[j].y]=max(dp[v[j].x][v[j].y],dp[v[j].x+dx[i]][v[j].y+dy[i]]+1);
}
}
}
int maxn=0;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
maxn=max(maxn,dp[i][j]);
}
cout << maxn;
return 0;
}
by bulopi @ 2024-04-22 19:50:29
@ztyx 代码的错误就出在没有对
显而易见,每个
在你的
AC代码如下(球关):
#include <bits/stdc++.h>
using namespace std;
struct node
{
int x,y,h;
};
vector<node> v;
bool cmp(node x,node y)
{
return x.h<y.h;
}
int dp[105][105],H[105][105];
int dx[5]={0,1,-1,0,0};
int dy[5]={0,0,0,1,-1};
int main()
{
int r,c;
cin >> r >> c;
memset(H, 0x3f3f3f3f, sizeof H);
for (int i = 1; i <= r; i++)
for (int j = 1; j <= c; j++)
dp[i][j] = 1;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
node NEW;
NEW.x=i;
NEW.y=j;
cin >> H[i][j];
NEW.h=H[i][j];
v.push_back(NEW);
}
sort(v.begin(),v.end(),cmp);
for(int j=0;j<v.size();j++)
{
for(int i=1;i<=4;i++)
{
if(H[v[j].x][v[j].y]>H[v[j].x+dx[i]][v[j].y+dy[i]])
{
dp[v[j].x][v[j].y]=max(dp[v[j].x][v[j].y],dp[v[j].x+dx[i]][v[j].y+dy[i]]+1);
}
}
}
int maxn=0;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
maxn=max(maxn,dp[i][j]);
}
cout << maxn;
return 0;
}
by ztyx @ 2024-04-22 21:45:58
@bulopi 好的 谢谢啦