动态规划问题——1015. 摘花生(AcWing题库)

Posted 芜独独

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划问题——1015. 摘花生(AcWing题库)相关的知识,希望对你有一定的参考价值。

题目来源:https://www.acwing.com/problem/content/1017/

思路

分成往东和往西(横向和竖向)还有其他(汇聚一点)三种移动方式考虑。最后的花生在最后的点。

代码

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N=1000;
int f[N][N];//得到的花生数
int a[N][N];//每个点的花生数
int t,r,c;//t是存几个数组,r和c分别是该数组的行和列

int main()
    cin>>t;
    for (int i=0;i<t;i++)
        cin>>r>>c;
        for(int j=1;j<=r;j++)
            for(int k=1;k<=c;k++)
                cin>>a[j][k];
            
        
        memset(f,0,sizeof(f));

        for(int j=1;j<=r;j++)
            for(int k=1;k<=c;k++)
                if(j==1) 
                    f[j][k]=f[j][k-1]+a[j][k];//向东
                
                else if(k==1) 
                    f[j][k]=f[j-1][k]+a[j][k];//向南
                else //向北和向西
                    f[j][k]=max(f[j-1][k],f[j][k-1])+a[j][k];
                
            

        cout<<f[r][c]<<endl;
    
    return 0;

以上是关于动态规划问题——1015. 摘花生(AcWing题库)的主要内容,如果未能解决你的问题,请参考以下文章

AcWing 1015 摘花生 [线性dp]

DP来一波

数字三角形模型和最长上升子序列模型 AcWing题目

DP. 数字三角形模型

寒假每日一题(入门组)week4 完结

openjudge-NOI 2.6基本算法之动态规划 专题题解目录