整数划分 钱币兑换
来源:互联网 发布:同一网络的打印机安装 编辑:程序博客网 时间:2024/04/30 14:08
Problem 36: 自然数拆分
Time Limit:1 Ms| Memory Limit:128 MB
Difficulty:2
Description
输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复。
Input
输入只有一个整数n,表示待拆分的自然数n。 n<=80
Output
输出一个数,即所有方案数
Sample Input
7
Sample Output
14
Hint
解释:
输入7,则7拆分的结果是
7=1+6
7=1+1+5
7=1+1+1+4
7=1+1+1+1+3
7=1+1+1+1+1+2
7=1+1+1+1+1+1+1
7=1+1+1+2+2
7=1+1+2+3
7=1+2+4
7=1+2+2+2
7=1+3+3
7=2+5
7=2+2+3
7=3+4
一共有14种情况,所以输出14
输入7,则7拆分的结果是
7=1+6
7=1+1+5
7=1+1+1+4
7=1+1+1+1+3
7=1+1+1+1+1+2
7=1+1+1+1+1+1+1
7=1+1+1+2+2
7=1+1+2+3
7=1+2+4
7=1+2+2+2
7=1+3+3
7=2+5
7=2+2+3
7=3+4
一共有14种情况,所以输出14
#include<stdio.h> int split(int n, int m){ if(n < 1 || m < 1) return 0;//当或者小于1时,有0种表示方法 if(n == 1 || m == 1) return 1;//当等于1时,只有一种表示方法 if(n < m) return split(n, n);//当n小于m时,相当于把n划分成小于等于n的数 if(n == m) return split(n, m-1)+1;//当n等于m时,比如5,只有5+0和把5划分成小于等于4的数的和 if(n > m) return split(n, m-1) + split(n-m, m);//当n大于m时,只有两种情况,包含m和不包含m,包含m时,相当于求n-m的划分;不包含时,相当于求最大是m-1的n的划分} int main(void){ int n; scanf("%d", &n); printf("%d\n", split(n, n-1));//n拆分成不大于n的数 return 0;}
Problem 45: 钱币兑换问题
Time Limit:1 Ms| Memory Limit:128 MB
Difficulty:2
Description
在一个国家仅有1分,2分,3分硬币,将钱N分兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
Input
每行只有一个正整数N,N小于32768。(有多组测试数据,以EOF结束)
Output
对应每个输入,输出兑换方法数。
Sample Input
20
2934
2934
Sample Output
44
718831
718831
Source
hdoj
用上面的递归方法会超时,所以就用一个数组保存每一步计算的值,
a[i][j]保存把i划分成不大于j的数的和共有多少种情况
#include<stdio.h> int a[32768][4]; void split(int n, int m){ int i, j; for(i = 1; i <= n; i++) { for(j = 1; j <= m; j++) { if(i < j) a[i][j] = a[i][i]; else if(i == j) a[i][j] = 1 + a[i][j-1]; else a[i][j] = a[i][j-1] + a[i-j][j]; } }} int main(void){ int n; while(scanf("%d", &n) != EOF) { split(n, 3); printf("%d\n", a[n][3]); } return 0;}
- 整数划分 钱币兑换
- 钱币兑换
- 钱币兑换
- HDOJ 钱币兑换问题
- 钱币兑换问题
- hdu1284(钱币兑换问题)
- HDU1284:钱币兑换问题
- 钱币兑换问题
- 钱币兑换问题
- HDOJ 钱币兑换
- HDU1284 钱币兑换问题
- 钱币兑换问题
- HDU1284-钱币兑换问题
- HDU1284钱币兑换问题
- 钱币兑换问题
- 钱币兑换问题(1284)
- 钱币兑换问题
- 钱币兑换问题
- 从length与length()开始谈Java
- selenium用java打开人人网并输入密码登陆
- 如何在fedora上编译c或c++文件
- C++代码优化方法总结
- 大学英语六级听力——014(the important confidence)
- 整数划分 钱币兑换
- 三色旗问题
- 介绍一篇很不错的Objective-C的文章
- Hdu 1078 FatMouse and Cheese
- Mina框架【转】
- android中的Intent(意图)理解
- 课后习题Chapter1
- SQLServer 2008 创建获取中文字符串首字母
- 杭电1160