UVA 357 - Let Me Count The Ways
2012-04-08 20:00
453 查看
其实同种类型的题我不想重复发的,感觉没意思。这题又是硬币问题,和147、674原理一样。只是我在做这题时遇到了新的问题,也算是有新的收获,就发一下吧。我曾和zxpn讨论过是之前就算好所有结果,还是每输入一个就计算一个效率高。当时我认为肯定是输一个算一个好,因为把所有的都算出来,并不是每个都会用的,也算一种浪费;而DP时用记忆化搜索会保存每次调用的所有数,如果下次也要调用的话就不必再算了,明显更好。今天遇到这题DP不行了,原因是数很大时用递归形式的DP会导致栈溢出。下面是代码:
#include<stdio.h> typedef long long int llg; #define MAXN 30010 llg f[MAXN][6]; int coin[] = {1,5,10,25,50}; int main() { int a,i,j; llg ans; for(i = 0; i < MAXN; i++) for(j = 0; j < 5; j++) { f[i][j] = 1; for(int k = 1; k <= j && i >= coin[k]; k++) f[i][j] += f[i-coin[k]][k]; } while(scanf("%d",&a)==1) { ans = f[a][4]; if(ans != 1) printf("There are %lld ways to produce %d cents change.\n",ans,a); else printf("There is only 1 way to produce %d cents change.\n",a); } return 0; }
相关文章推荐
- UVa 357 Let Me Count The Ways
- UVA 357 Let Me Count The Ways (dp + 完全背包)
- UVa 357 - Let Me Count The Ways
- UVA-357-Let Me Count The Ways
- uva 357 Let Me Count The Ways
- uva 357 - Let Me Count The Ways(动态规划-注意dp初始化的问题)
- UVA 357 Let Me Count The Ways
- UVA 357 - Let Me Count The Ways
- uva357 - Let Me Count The Ways(动规,母函数)
- UVa 357: Let Me Count The Ways
- uva 357 - Let Me Count The Ways
- UVA 357 Let Me Count The Ways
- Let Me Count The Ways - UVa 357 dp
- UVA 357 Let Me Count The Ways(完全背包)
- UVA 357 Let Me Count The Ways 完全背包
- uva 357 Let Me Count The Ways
- UVa 357 - Let Me Count The Ways
- UVA - 357 - Let Me Count The Ways(动态规划)
- UVA 357 Let Me Count The Ways
- UVa:357 Let Me Count The Ways