POJ 3181 Dollar Dayz
来源:互联网 发布:mac dos模拟器 编辑:程序博客网 时间:2024/05/17 01:43
题目链接:(—_—) zZ
题目大意:long long ago 有一个商店, 它里面卖的东西价格为[1¥...k¥]区间内的, 每种价格的物品都有无限件, 现有n元,要求花完这n元买物品, 求出能买物品搭配方式的总数
思路:这题是在背包问题里面的题, 不过不会做, 参考了大牛的思路
code:
#include <stdio.h>#include <string.h>#define inf 10000000000000000int main(){ int i = 0, j = 0, n = 0, k = 0; __int64 a[1002], b[1002]; while(scanf("%d %d", &n, &k) != EOF ) { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); a[0] = 1; for(i = 1; i<=k; i++) for(j = i; j<=n; j++) { b[j] = b[j]+b[j-i]+(a[j]+a[j-i])/inf; a[j] = (a[j]+a[j-i])%inf; } if(b[n]) printf("%I64d", b[n]); printf("%I64d\n", a[n]); } return 0;}
code:
#include <stdio.h>#include <string.h>int main(){ int i = 0, j = 0, k = 0 , l = 0, n = 0, s = 0; __int64 dp[1002][10]; while(scanf("%d %d", &n, &k) != EOF ) { memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for(i = 1; i<=k; i++) for(j = i; j<=n; j++) { for(l = 0; l<9; l++) { dp[j][l] += dp[j-i][l]; if(dp[j][l]>10000) { dp[j][l] %= 10000; dp[j][l+1]++; } } } i = 8; while(dp[n][i] == 0) i--; printf("%I64d", dp[n][i--]); while(i>=0) { printf("%.4I64d", dp[n][i]); i--; } } return 0;}
- poj 3181 Dollar Dayz
- POJ 3181 Dollar Dayz
- Poj 3181 Dollar Dayz
- POJ 3181 Dollar Dayz
- poj 3181 Dollar Dayz
- poj 3181 Dollar Dayz
- POJ 3181 Dollar Dayz
- poj 3181 Dollar Dayz
- poj 3181 Dollar Dayz
- POJ-3181-Dollar Dayz
- POJ 3181 Dollar Dayz
- poj 3181 Dollar Dayz
- poj 3181 Dollar Dayz
- POJ 3181 Dollar Dayz
- POJ 3181 Dollar Dayz
- POJ 3181 Dollar Dayz
- POJ 3181Dollar Dayz
- poj 3181 Dollar Dayz
- jQuery中的mouseleave和mouseout区别
- C++中extern “C”含义深层探索
- UNIX网络编程学习回顾---字节序
- myeclipse经验总结 9
- 那些年鄙人做过的项目之OA系统
- POJ 3181 Dollar Dayz
- linux中fork--子进程是从哪里开始运行
- PHP+FLASH多文件异步上传swfupload
- Spring的优秀工具类盘点
- cocos2dx+box2d实现物体爆裂效果
- myeclipse 经验总结 10
- php在windows平台执行shell解压文件
- ADODB简介以及简单使用
- BulletedList使用及详解