为什么倒着求只有60分

P1508 Likecloud-吃、吃、吃

```cpp #include<bits/stdc++.h> using namespace std; int main() { int m,n,i,j,k,dp[205][205]={0},a[205][205],maxl=0; cin>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) cin>>a[i][j]; dp[m][n/2+1]=a[m][n/2+1]; dp[m][n/2]=a[m][n/2]; dp[m][n/2+2]=a[m][n/2+2]; for(i=m-1;i>=1;i--) for(j=1;j<=n;j++) dp[i][j]=max(max(dp[i+1][j],dp[i+1][j-1]),dp[i+1][j+1])+a[i][j]; for(i=1;i<=n;i++) maxl=max(maxl,dp[1][i]); cout<<maxl; } ```
by Muskmelon @ 2019-02-10 16:38:35


是不是边界问题?
by 铃宕 @ 2019-02-10 16:51:45


其他的应该赋值为-inf否则可能走出非法道路 比如这样 1 1 1 1 1 1000 1 1 1 1 1 1 1 1 1 (1000显然走不到但结果出1002)
by a2956331800 @ 2019-02-10 16:54:40


还有外面一圈也要赋
by a2956331800 @ 2019-02-10 16:56:25


等会例子好像不对应该是 1 1 1 1 1 1 1 1000 1 1 1 1 1 1 1 1 1 1 1 1 1
by a2956331800 @ 2019-02-10 16:58:15


应该出3然后你的程序出1001
by a2956331800 @ 2019-02-10 16:58:43


@[a2956331800](/space/show?uid=9517) 我把代码改了,可是还是过不去。(P:这样处理边界没问题吧) ```cpp #include<bits/stdc++.h> using namespace std; int main() { int m,n,i,j,k,dp[205][205],a[205][205],maxl=0; int inf=0x3f3f3f3f; memset(dp,-inf,sizeof(dp)); cin>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) { cin>>a[i][j]; dp[i][j]=0; } dp[m][n/2+1]=a[m][n/2+1]; dp[m][n/2]=a[m][n/2]; dp[m][n/2+2]=a[m][n/2+2]; for(i=m-1;i>=1;i--) for(j=1;j<=n;j++) dp[i][j]=max(max(dp[i+1][j],dp[i+1][j-1]),dp[i+1][j+1])+a[i][j]; for(i=1;i<=n;i++) maxl=max(maxl,dp[1][i]); cout<<maxl; } ```
by Muskmelon @ 2019-02-10 20:18:13


@[KINGSCANF](/space/show?uid=81591) 这样处理边界了,可是还是过不了 ```cpp #include<bits/stdc++.h> using namespace std; int main() { int m,n,i,j,k,dp[205][205],a[205][205],maxl=0; int inf=0x3f3f3f3f; memset(dp,-inf,sizeof(dp)); cin>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) { cin>>a[i][j]; dp[i][j]=0; } dp[m][n/2+1]=a[m][n/2+1]; dp[m][n/2]=a[m][n/2]; dp[m][n/2+2]=a[m][n/2+2]; for(i=m-1;i>=1;i--) for(j=1;j<=n;j++) dp[i][j]=max(max(dp[i+1][j],dp[i+1][j-1]),dp[i+1][j+1])+a[i][j]; for(i=1;i<=n;i++) maxl=max(maxl,dp[1][i]); cout<<maxl; } ```
by Muskmelon @ 2019-02-10 20:19:06



by 铃宕 @ 2019-02-10 20:20:05


@[liuyaliu](/space/show?uid=170566) 不是那个意思,是把第一行不能走的位置和图外面一圈($dp[i][0],dp[i][n+1],dp[0][i],dp[m+1][i]$)赋值为0x7fffffff(inf)
by a2956331800 @ 2019-02-11 14:39:45


| 下一页