Monkey Banana Problem 动态规划

#include<bits/stdc++.h>
using namespace std;

const int Max=1000;
int a[Max][Max];
int dp[Max][Max];

int main() {
    int caseN;
    cin>>caseN;
    for(int i=0; i<caseN; i++) {
        int n;
        while(cin>>n) {
            memset(a,0,sizeof(a));
            memset(dp,0,sizeof(dp));                   //每一次重新置0。
            for(int i=0; i<n; i++) {
                for(int j=0; j<=i; j++) {
                    cin>>a[i][j];
                    dp[i][j]=a[i][j];
                }
            }
            for(int i=n; i<2*n-1; i++) {
                for(int j=0; j<2*n-1-i; j++) {
                    cin>>a[i][j];
                    dp[i][j]=a[i][j];
                }
            }
            for(int i=2*n-2; i>=n-1; --i) {
                for(int j=0; j<2*n-1-i; j++) {
                    if(j==0) {
                        dp[i][j]+=dp[i+1][j];
                    } else if(j==2*n-2-i) {
                        dp[i][j]+=dp[i+1][j-1];
                    } else {
                        dp[i][j]+=max(dp[i+1][j],dp[i+1][j-1]);
                    }
                }
            }
            for(int i=n-2; i>=0; --i) {
                for(int j=0; j<=i; j++) {
                    dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);
                }
            }
            cout<<"Case "<<i+1<<": "<<dp[0][0]<<endl;
        }
    }
    return 0;
}
全部评论
楼主厉害,动态规划的我总是理不清
点赞 回复 分享
发布于 2022-10-18 20:30 山西

相关推荐

不愿透露姓名的神秘牛友
07-10 11:55
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
我看看你怎么个事来
牛牛爱吃草草:我看看你怎么个事来
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务