USACO 2.3 Money Systems


动态规划经典题。
属于每种物品数目可以任意的背包问题。

#include <iostream>
#include 
<fstream>

using namespace std;

ifstream fin(
"money.in");
ofstream fout(
"money.out");

#ifdef _DEBUG
#define out cout
#define in cin
#else
#define out fout
#define in fin
#endif

long long dp[10001];
int coins[25];

void solve()
{
    dp[
0= 1;

    
int v,n;

    
in>>v>>n;

    
for(int i=0;i<v;++i)
        
in>>coins[i];

    
for(int i=0;i<v;++i){
        
for(int j=0;j+coins[i]<=n;++j){
            dp[j
+coins[i]]+=dp[j];
        }
    }

    
out<<dp[n]<<endl;
}

int main(int argc,char *argv[])
{
    solve(); 
    
return 0;
}


posted on 2009-06-25 22:16 YZY 阅读(1066) 评论(0)  编辑 收藏 引用 所属分类: AlgorithmUSACO动态规划


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

积分与排名

最新评论

阅读排行榜