90分蒟蒻求助

P1508 Likecloud-吃、吃、吃

@[白雪公猪](/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


|