尤斯蒂亚 @ 2020-11-26 17:18:52
这是90分的代码
#include<cstdio>
#include<iostream>
#include<stdio.h>
#include<bits/stdc++.h>
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<algorithm>
#include<string>
using namespace std;
int r,c;
int value[101][101];
int num[101][101];
void dp(int x,int y)
{
if (value[x-1][y]!=0 and num[x-1][y]<num[x][y] and value[x-1][y]+1 >= value[x][y]) value[x][y]=value[x-1][y]+1;
if (value[x+1][y]!=0 and num[x+1][y]<num[x][y] and value[x+1][y]+1 >= value[x][y]) value[x][y]=value[x+1][y]+1;
if (value[x][y-1]!=0 and num[x][y-1]<num[x][y] and value[x][y-1]+1 >= value[x][y]) value[x][y]=value[x][y-1]+1;
if (value[x][y+1]!=0 and num[x][y+1]<num[x][y] and value[x][y+1]+1 >= value[x][y]) value[x][y]=value[x][y+1]+1;
}
void search(int x,int y)
{
if (num[x][y]<num[x-1][y]and num[x][y]<num[x+1][y]and num[x][y]<num[x][y-1]and num[x][y]<num[x][y+1])
value[x][y]=1;
}
int check()
{
for (int i=1;i<=r;++i)
for (int j=1;j<=c;++j)
{
if (value[i][j]==0) return 0;
}
return 1;
}
int main()
{
int maxn=0;
cin>>r>>c;
for (int i=0;i<=r+1;++i)
for (int j=0;j<=c+1;++j)
{
num[i][j]=999999;
}
for (int i=1;i<=r;++i)
for (int j=1;j<=c;++j)
{
cin>>num[i][j];
}
for (int i=1;i<=r;++i)
for (int j=1;j<=c;++j)
{
value[i][j]=0;
}
for (int i=1;i<=r;++i)
for (int j=1;j<=c;++j)
{
search(i,j);
}
//预处理
for (int k=1;k<=r*c/2;++k)
{
for (int i=1;i<=r;++i)
for (int j=1;j<=c;++j)
{
dp(i,j);
}
}
for (int i=1;i<=r;++i)
for (int j=1;j<=c;++j)
{
maxn=max(maxn,value[i][j]);
}
cout<<maxn;
return 0;
}
紧接着我在结尾出加了一行
maxn=max(maxn,value[i][j]);
}
if (maxn==0) maxn=1;
cout<<maxn;
return 0;
}
竟然AC了!!! 说明
2 2
1 1
1 1
这个样例的答案居然是1,但是按照题目描述和实际情况,应该是根本滑不了才对。 太坑了!!
by imfkwk @ 2021-01-30 01:02:15
@尤斯蒂亚 我还以为那是样例,没想到是艺术作品