1293:買書
時間限制: 1000 ms 內存限制: 65536 KB
提交數: 3200 通過數: 2130
【題目描述】
小明手裏有n元錢全部用來買書,書的價格爲10元,20元,50元,100元。
問小明有多少種買書方案?(每種書可購買多本)
【輸入】
一個整數 n,代表總共錢數。(0≤n≤1000)
【輸出】
一個整數,代表選擇方案種數。
【輸入樣例】
20
【輸出樣例】
2
【提示】
樣例輸入
樣例輸入2:
15
樣例輸入3:
0
樣例輸出
樣例輸出2:
0
樣例輸出3:
0
思路: 先定義數組保存每種書的價格,設f[j]表示選擇方案種數,如果f[j-w[i]] != 0,則f[j] = f[j] + f[j-w[i]]。和硬幣那題類似。
#include<cstdio>
#include<iostream>
using namespace std;
#define N 10000
typedef long long ll;
int v;
ll f[N];
int w[4] = {10,20,50,100};
int main(){
cin >> v;
f[0] = 1;
for(int i = 0; i <4; i++)
for(int j = w[i];j <= v;j++)
f[j] += f[j-w[i]];
cout << f[v] <<endl;
return 0;
}