LITTLE SHOP OF FLOWERS(3)

来源:互联网 发布:数据可视化展示方案 编辑:程序博客网 时间:2024/04/26 11:10

http://poj.org/problem?id=1157

这次的dp[i][j]表示第i种花放在第k个之前获得的最大值。

dp[i][j]=Max(dp[i-1][k-1]+a[i][k],dp[i][k-1]);//第i个花放在第k个位置与不放在第k个位置,有点像递推专题的题目

由于计算dp[i][j]要知道dp[i-1][j-1]跟dp[i][j-1],后者可以满足,前者要满足的条件就要把第一行dp[1][k]初始化就好。

#include <cstdio>#include <algorithm>using namespace std;int a[101][101],dp[101][101];int main(){    int f,v;    scanf("%d%d",&f,&v);    for(int i=1;i<=f;i++)        for(int j=1;j<=v;j++)        scanf("%d",&a[i][j]);    dp[1][1]=a[1][1];    for(int k=2;k<=v;k++)        dp[1][k]=max(a[1][k],dp[1][k-1]);    for(int i=2;i<=f;i++){        for(int j=i+1;j<=v;j++)            dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1]);    }    printf("%d\n",dp[f][v]);    return 0;}
AC之路,我选择坚持~~

0 0
原创粉丝点击