40分蒟蒻求救

P1508 Likecloud-吃、吃、吃

首先,a数组最外层一圈应该填成-INF。 其次,最终结果应该是dp[m][n / 2] , dp[m][n / 2 + 1] , dp[m][n / 2 + 2]中的最大值。 最后,第15行为什么要倒序填表? ```cpp #include <bits/stdc++.h> using namespace std; int m,n,maxx; int a[1001][1001]; int dp[1001][1001]; int main() { scanf("%d %d",&m,&n); for (int i = 0 ; i <= m + 1 ; i++) { for (int j = 0 ; j <= n + 1 ; j++) { a[i][j] = -1e9; } } for (int i = 1 ; i <= m ; i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); for(int i=1;i<=m + 1;i++) for(int j=1;j<=n;j++) dp[i][j]=max(dp[i-1][j],max(dp[i-1][j-1],dp[i-1][j+1]))+a[i][j]; maxx = max (dp[m][n / 2] , max (dp[m][n / 2 + 1] , dp[m][n / 2 + 2])); printf("%d\n",maxx); return 0; } ```
by whc2020 @ 2020-01-05 16:12:55


这样应该就能过了。 @[wangsixian2007](/user/263469)
by whc2020 @ 2020-01-05 16:13:27


只要把最外圈全部填成-INF再把出发点填为0就应该能AC了。
by Cici_ovo @ 2020-01-30 22:02:22


|