POJ1157 LITTLE SHOP OF FLOWERS

来源:互联网 发布:泗阳12345网络问政爱园 编辑:程序博客网 时间:2024/05/21 13:49

一.原题链接:http://poj.org/problem?id=1157

二.题意:题意看不懂啊,搜了一下,是给一个矩阵,每行取一个,下一行取的数的列数要大于上一行所取得列数。求所取的最大数。

三.思路:简单DP,我都能做的DP- -!dp[i][j]表示第i行取第j个的最大数。

dp[i][j] = dp[i][j] + max(dp[i-1][i-1], dp[i-1][i],.......dp[i-1][j-1]);

四.代码:

//POJ1157#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int nValue[7];int dp[105][105];const int INF = 1<<29;int main(){   // freopen("in.txt", "r", stdin);    int i, j, k, F, V, maxNum;    cin>>F>>V;    for(i = 0; i < F; i++)        for(j = 0; j < V; j++)            scanf("%d", &dp[i][j]);    for(i = 1; i < F; i++){        for(j = i; j < V; j++){            maxNum = -INF;            for(k = i - 1; k < j; k++){                maxNum = max(maxNum, dp[i-1][k]);            }            dp[i][j] += maxNum;        }    }    maxNum = -INF;    for(i = F - 1; i < V; i++){        maxNum = max(dp[F-1][i], maxNum);    }    cout<<maxNum<<endl;    return 0;}

 

0 0
原创粉丝点击