hdu2185

来源:互联网 发布:不翻墙上google 知乎 编辑:程序博客网 时间:2024/06/05 15:29

简单dp

#include <iostream>using namespace std;int dp[1005][16][16];int main(){    int w[1005];    int b[1005];        int sum=1;    while (cin>>w[sum]>>b[sum])        sum++;    memset(dp,0,sizeof(dp));    for (int i=1;i<sum;i++)    {        for (int t=0;t<=i&&t<=15;t++)        {            for (int k=0;k<=15&&k<=i-t;k++)            {                dp[i][t][k]=dp[i-1][t][k];                if (t>0&&dp[i][t][k]<dp[i-1][t-1][k]+w[i])                    dp[i][t][k]=dp[i-1][t-1][k]+w[i];                if (k>0&&dp[i][t][k]<dp[i-1][t][k-1]+b[i])                    dp[i][t][k]=dp[i-1][t][k-1]+b[i];            }        }    }       cout<<dp[sum-1][15][15]<<endl;    //system("pause");}