Cracking the Coding Interview 8.7
2014-08-21 11:24
375 查看
Given a infinite number of quarters(25cents), dimens(10cents), nickels(5cents) and pennies(1cent), write code to calculate the number of ways of representing n cents.
思路:
buf[] = {1,5,10,25}
为了组成n,用到几个25呢?最多n/25个。
如果用1个25,那么问题就变成了用{1,5,10}组成n-25
如果用2个25,那么问题就变成了用{1,5,10}组成n-25*2
如果不用25,那么问题就变成了用{1,5,10}组成n
最多用n/25个25,最少用0个,依次递归下去,直到n变成0,或者只用{1}来组成结果
思路:
buf[] = {1,5,10,25}
为了组成n,用到几个25呢?最多n/25个。
如果用1个25,那么问题就变成了用{1,5,10}组成n-25
如果用2个25,那么问题就变成了用{1,5,10}组成n-25*2
如果不用25,那么问题就变成了用{1,5,10}组成n
最多用n/25个25,最少用0个,依次递归下去,直到n变成0,或者只用{1}来组成结果
#include<stdio.h> int func(int n,int idx,int *buf) { if(n==0 || idx==0) { return 1; } int m=n/buf[idx]; int r = 0; for(int i=0;i<=m;i++) { r+=func(n-i*buf[idx],idx-1,buf); } return r; } int main() { int buf[]={1,5,10,25}; printf("%d\n",func(51,3,buf)); return 0; }
相关文章推荐
- Cracking the Coding Interview 6.2
- Cracking the coding interview--Q1.8
- Cracking the coding interview--Q5.6
- Cracking the coding interview--Q1.3
- Cracking the coding interview Q1.1
- Cracking the coding interview--Q12.4
- 《Cracking the Coding Interview》——第2章:链表——题目7
- Cracking the Coding Interview Q2.1
- 《Cracking the Coding Interview》——第4章:树和图——题目2
- 《Cracking the Coding Interview》——第5章:位操作——题目8
- 《Cracking the Coding Interview》——第6章:智力题——题目3
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目6
- 《Cracking the Coding Interview》——第11章:排序和搜索——题目2
- cracking the coding interview No1.7
- Cracking the coding interview--Q1.1
- Cracking the coding interview--Q18.4
- Cracking the coding interview--Q18.5
- Cracking the coding interview--Q19.2
- Cracking the coding interview(中文版)
- Cracking The Coding Interview5.2