求大佬debug+建议,第一次写dp就被吊打。。。。

P1508 Likecloud-吃、吃、吃

只有40分
by 大耳朵图图 @ 2019-10-31 11:38:41


呀我没写注释
by 大耳朵图图 @ 2019-10-31 11:40:28


```cpp #include<bits/stdc++.h> using namespace std; int max1(int a,int b,int c)//找出最大值并判断有没有使用过,没使用过就是0 { if(a==b&&b==c&&a==c&&a==-65535) return 0; if ((a>b)&&(a>c)) return a; if ((b>a)&&(b>c)) return b; return c; } int main() { int m,n; cin>>m>>n; int a[m+2][n+2]={}; int f[m+2][n+2]; for(int i=0;i<=m+1;i++) { for(int j=0;j<=n+1;j++) { f[i][j]=-65535; //将输出初始化避免与测试数据重复 } } for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { cin>>a[i][j]; } } for(int j=1;j<=n;j++) f[1][j]=a[1][j]; for(int i=2;i<=m;i++) { for(int j=1;j<=n;j++) { f[i][j]=max1(f[i-1][j-1],f[i-1][j],f[i-1][j+1])+a[i][j]; //dp } } int ans=0; for(int j=1;j<=n;j++) ans=max(ans,f[m][j]);//输出最大值 cout<<ans; return 0; } ```
by 大耳朵图图 @ 2019-10-31 11:42:09


好像没考虑出发点的问题
by 冥诺在线发呆 @ 2019-10-31 11:43:02


对,出发点是 最后一行的中间的下方 只能在 f[n][m/2,m/2+1,m/2+2 ] 里更新
by CommonDataService @ 2019-10-31 13:21:20


|