POJ - 1157 LITTLE SHOP OF FLOWERS

来源:互联网 发布:小米3破解4g网络 编辑:程序博客网 时间:2024/06/04 23:35

题目大意: F束花插入V个瓶子里面,花要按编号插,不同花插入不同的花瓶有不同的美观程度,要求最大的美观程度。

解题思路: 状态函数为f[i][j]表示第i束花插入前j个瓶子里面。则状态转移函数为f[i][j]=max(f[i-1][j-1]+a[i][j],f[i][j-1])

因为有两种插法,一:第i束花插入第j个瓶子里面,则为f[i][j]=f[i-1][j-1]+a[i][j].二:第i束花不插入第j个瓶子里面,则f[i][j]=f[i][j-1]。两者当中取极大者

#include <cstdio>#include <algorithm>using namespace std;int main() {    int F, V;    while (scanf("%d%d", &F, &V) != EOF) {        int A, cur = 0, pre = 1, DP[2][110] = {-0x3f3f3f3f};        for (int i = 1; i <= F; i++) {            for (int j = 1; j <= V; j++) {                scanf("%d", &A);                if (j >= i && j <= V - F + i)                    DP[cur][j] = max(DP[cur][j-1], DP[pre][j-1] + A);                else                     DP[cur][j] = -0x3f3f3f3f;            }            swap(cur, pre);        }        printf("%d\n", DP[pre][V]);    }    return 0;}
0 0