全部评论 3

  • 打这么多真的好辛苦,求个免费的赞

    2023-08-25 来自 广东

    3
  • 哈害嗨

    2023-08-25 来自 广东

    1
  • 题解写的很好,但这好像是dfs,可以看看我这个dp的解法吗?

    //acgo A37.[CSP-J 2020] 方格取数 
    //难度:绿  解法:dp
    #include<bits/stdc++.h>
    #define mxx(a,b,c) max(a,max(b,c))
    using namespace std;
    long long n,m,a[1010][1010];
    long long dp[1010][1010][3];
    int main(){
    	memset(dp,-0x3f,sizeof(dp));
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>a[i][j];
    		}
    	}
    	dp[1][1][0]=a[1][1];
    	dp[1][1][1]=a[1][1];
    	for(int i=1;i<=m;i++){
    		for(int j=1;j<=n;j++){
    			dp[j-1][i][0]=a[j-1][i]+max(dp[j][i][0],dp[j][i][1]);
    			dp[j][i+1][1]=a[j][i+1]+mxx(dp[j][i][0],dp[j][i][1],dp[j][i][2]);
    			dp[j+1][i][2]=a[j+1][i]+max(dp[j][i][1],dp[j][i][2]);
    		}
    		for(int j=n;j>=1;j--){
    			dp[j-1][i][0]=a[j-1][i]+max(dp[j][i][0],dp[j][i][1]);
    			dp[j][i+1][1]=a[j][i+1]+mxx(dp[j][i][0],dp[j][i][1],dp[j][i][2]);
    			dp[j+1][i][2]=a[j+1][i]+max(dp[j][i][1],dp[j][i][2]);
    		}
    	}
    	cout<<mxx(dp[n][m][0],dp[n][m][1],dp[n][m][2]);
    }
    

    2026-02-07 来自 浙江

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页