题目大意:把N分兑换为1 2 3分硬币总共有多少种方法
思路:dp问题。子问题分解成如果只有一分和又一分和2分
只有1分:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
有1和2:1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10
1, 2, 3 :1 2 3 4 5 7 8 10 12 14 16 19 21 24 27 30 33 37 40
最后按着这个去写即可。
如果钱还有4,如法炮制即可
#include<stdio.h>
int z[32777];
int main(void)
{
int i;
int j;
z[0]=1;
for(i=1;i<=3;i++){
for(j=1;j<32777;j++){
z[j]+=z[j-i];
}
}
int num;
while(scanf("%d",&num)!=EOF){
printf("%d\n",z[num]);
}
return 0;
}
本文介绍了一个典型的动态规划问题——使用1、2、3分硬币兑换任意金额的方法数量。通过逐步分析递推关系并给出C语言实现代码,展示了如何高效解决此类问题。
2497

被折叠的 条评论
为什么被折叠?



