@[白雪公猪](/user/55369) QAQ苯宝宝也90分,#6挂了
by BabyBenzene @ 2019-11-14 07:44:19
@[白雪公猪](/user/55369) 发现问题了
by BabyBenzene @ 2019-11-14 08:23:46
AC代码
```cpp
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int a[201][201],dp[201][201],maxans=-999999;
int main()
{
// for(int i=0;i<=200;i++)
// for(int j=0;j<=200;j++)
// dp[i][j]=-999999;//先初始化比较小的数
int m,n;
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];//餐桌上的饭
// for(int i=1;i<=n;i++)
// if(i>=(n-1)/2&&i<=(n-(n-1)/2))//注意到第一排只能取中间三个值
// dp[m][i]=a[m][i];//第一排dp就等于a值
for(int i=m;i>=1;i--)//直接从第一排开始dp
for(int j=n;j>=1;j--)
{
if(j>=(n-(1+(m-i)*2))/2&&j<=n-((n-(1+(m-i)*2))/2)+1)//第一排取中间三个值,第二排取五个以此类推得出规律防止越界
dp[i][j]=max(max(dp[i+1][j-1],dp[i+1][j]),dp[i+1][j+1])+a[i][j];//dp表达式倒推
}
for(int i=1;i<=n;i++)
if(maxans<=dp[1][i])
maxans=dp[1][i];//找吃完后最大值
cout<<maxans;//输出
return 0;
}//55369 检验
```
by BabyBenzene @ 2019-11-14 08:24:05
你的左右界搞错了,你之前是
$[(n-(3+(m-i)*2))/2,n-((n-(3+(m-i)*2))/2)]$
你可看看我改的
还有,其实你不用把第一排拎出来重新弄的,可以放在dp里面一起写,而且,没必要初始化
~~$Ctrl+Shift+A$是个好习惯~~
by BabyBenzene @ 2019-11-14 08:29:09
不过说来个人比较喜欢这种亚子~
```cpp
#include<iostream>
using namespace std;
int a[201][201],dp[201][201],maxans;
int main() {
int m,n;
cin>>m>>n;
for(int i=1; i<=m; i++)
for(int j=1; j<=n; j++)
cin>>a[i][j];
for(int i=m; i>=1; i--)
for(int j=n; j>=1; j--)
if(j>=(n-(1+(m-i)*2))/2&&j<=((n+(3+(m-i)*2))/2))
dp[i][j]=max(max(dp[i+1][j-1],dp[i+1][j]),dp[i+1][j+1])+a[i][j];
for(int i=1; i<=n; i++)
maxans=max(maxans,dp[1][i]);
cout<<maxans<<endl;
return 0;
}//55369 检验
```
或者:
```cpp
#include<iostream>
using namespace std;
int a[201][201],dp[201][201],maxans;
int main() {
int m,n;
cin>>m>>n;
for(int i=1; i<=m; i++) {
for(int j=1; j<=n; j++) {
cin>>a[i][j];
}
}
for(int i=m; i>=1; i--) {
for(int j=n; j>=1; j--) {
if(j>=(n-(1+(m-i)*2))/2&&j<=((n+(3+(m-i)*2))/2)) {
dp[i][j]=max(max(dp[i+1][j-1],dp[i+1][j]),dp[i+1][j+1])+a[i][j];
}
}
}
for(int i=1; i<=n; i++) {
maxans=max(maxans,dp[1][i]);
}
cout<<maxans<<endl;
return 0;
}//55369 检验
```
by BabyBenzene @ 2019-11-14 08:33:53
@[BabyBenzene](/user/207234) 谢谢大佬!!!!
by Fireflying @ 2019-11-14 12:45:54
@[白雪公猪](/user/55369) O(∩_∩)O
by BabyBenzene @ 2019-11-14 12:47:04