openjudge6049买书
小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)
输入一个整数 n,代表总共钱数。(0 <= n <= 1000)输出一个整数ans,代表选择方案种数
样例:
(1) n = 10 ans = 1
(2)n = 15,ans = 0
(3)n = 20, ans = 2
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; int main() { int n; int a[5] = {0,10,20,50,100}; long long dp[1005] = {}; scanf("%d", &n); if(n == 0) { printf("0"); return 0; } dp[0] = 1; for(int i = 1;i <= 4;i++) { for(int j = a[i];j <= n;j++) { dp[j] += dp[j - a[i]]; } } printf("%lld", dp[n]); return 0; } //此题有一个神奇的隐含条件:就是n % 10 == 0才有解, 否则误解