首页 > 代码库 > UVa 147 - Dollars
UVa 147 - Dollars
题目:有一些面值的钱币,问组成面值n,有多少种方法。
分析:dp,完全背包。整数拆分用背包。
说明:使用long long防止溢出。
#include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> using namespace std; long long F[30003]; int C[11] = {10000,5000,2000,1000,500,200,100,50,20,10,5}; int main() { for (int i = 0 ; i <= 30000 ; ++ i) F[i] = 0LL; F[0] = 1LL; for (int i = 0 ; i < 11 ; ++i) for (int j = C[i] ; j <= 30000 ; ++ j) F[j] += F[j-C[i]]; int a,b; while (~scanf("%d.%d",&a,&b) && a+b) printf("%3d.%02d%17lld\n",a,b,F[100*a+b]); return 0; }
UVa 147 - Dollars
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。