动态规划练习--18(买书)

来源:互联网 发布:c语言学习文档 编辑:程序博客网 时间:2024/05/16 12:47

题目描述:

描述

小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。

问小明有多少种买书方案?(每种书可购买多本)

输入
一个整数 n,代表总共钱数。(0 <= n <= 1000)
输出
一个整数,代表选择方案种数
样例输入
样例输入1:20
样例输入2:15
样例输入3:0
样例输出
样例输出1:2
样例输出2:0
样例输出3:0 
题目理解:n元钱,三种书,求买书方案

解题思路:因为每种书可购买多本,一个非常典型的完全背包问题。

源代码:

#include<iostream>using namespace std;int f[1005];int a[5];int main(){    a[1]=10;    a[2]=20;    a[3]=50;    a[4]=100;    int n;    cin>>n;    f[0]=1;    for(int i=1;i<=4;i++)    {        for(int j=a[i];j<=n;j++)            f[j]+=f[j-a[i]];    }    if(n==0)        cout<<"0"<<endl;    else        cout<<f[n]<<endl;    return 0;}

0 0
原创粉丝点击