POJ 1157 dp

来源:互联网 发布:php网教视频网站源码 编辑:程序博客网 时间:2024/06/01 10:03

题意:

给你n个花插到m个花瓶中保证n个花的顺序的情况下如何最大

分析:

       dp【i】【j】表示前i种花插入前j种花瓶的最大

dp【i】【j】=max(dp【i-1】【j-1】+cost【i】【j】,dp【i】【j-1】)

ACcode:

#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#define maxn 105#include <cstring>using namespace std;int n,m;int a[maxn][maxn];int dp[maxn][maxn];int main(){    while(scanf("%d%d",&n,&m)!=EOF){        for(int i=1;i<=n;++i)            for(int j=1;j<=m;++j)                scanf("%d",&a[i][j]);        dp[1][1]=a[1][1];        for(int i=2;i<=n;++i)dp[1][i]=max(dp[1][i-1],a[1][i]);        for(int i=2;i<=n;++i){            for(int j=i+1;j<=m;++j)                dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1]);        }        printf("%d\n",dp[n][m]);    }    return 0;}


0 0
原创粉丝点击