- 浏览: 53942 次
- 性别:
- 来自: 北京
文章分类
最新评论
方法一:递归方法
对 charge[]={1,5,10,20,50,100}标号 用i表示 0,1,2,3,4
f(n,i)表示n由后面第i到4种零钱的组合结果
f(n,0)=f(n-charge[0],0)+f(n-charge[1],1)+f(n-charge[2],2)+f(n-charge[3],3)+f(n-charge[4],4)
f(n,i)=f(n-charge[i],i)+...+f(n-charge[4],4)
方法二:暴力破解法
对 charge[]={1,5,10,20,50,100}标号 用i表示 0,1,2,3,4
f(n,i)表示n由后面第i到4种零钱的组合结果
f(n,0)=f(n-charge[0],0)+f(n-charge[1],1)+f(n-charge[2],2)+f(n-charge[3],3)+f(n-charge[4],4)
f(n,i)=f(n-charge[i],i)+...+f(n-charge[4],4)
public class Money { public static int[] charge = { 1, 5, 10, 20, 50, 100 }; /** * @param args */ public static void main(String[] args) { int sum = 100; int m = money(sum, 0, sum + "="); System.out.println(m); } public static int money(int n, int s, String path) { if (n == 0) { System.out.println(path); return 1; } int count = 0; for (int i = s; i < charge.length; i++) { if (n >= charge[i]) { count += money(n - charge[i], i, path+ charge[i] + "+" ); } } return count; } }
方法二:暴力破解法
package com.viking.dynamic; public class Money2 { /** * @param args */ public static void main(String[] args) { System.out.println(money(100)); } public static int money(int n) { int count = 0; for (int i = n % 5; i <= n; i += 5) { int f = n - i; if (f == 0) { count++; print(n, i, 0, 0, 0, 0, 0); } else if (f % 5 == 0) { for (int j = 0; j <= f; j += 5) { int g = f - j; if (g == 0) { count++; print(n, i , j, 0, 0, 0, 0); } else if (g % 10 == 0) { for (int k = 0; k <= g; k += 10) { int h = g - k; if (h == 0) { count++; print(n, i, j, k, 0, 0, 0); } else if (h % 10 == 0 ) { for (int t = 0; t <= h; t += 20) { int l = h - t; if (l == 0) { count++; print(n, i , j, k, t, 0, 0); } else if (l % 50 == 0) { for (int r = 0; r <= l; r += 50) { int p = l - r; if (p == 0) { count++; print(n, i , j, k, t, r, 0); } else if (p % 100 == 0) { count++; print(n, i , j, k, t, r, p); } } } } } } } } } } return count; } public static void print(int n, int n1, int n5, int n10, int n20, int n50, int n100) { String path = n + "="; boolean change = false; if (n1 != 0) { path += "1*" + n1 / 1; change = true; } if (n5 != 0) { if (change) { path += "+"; } path += "5*" + n5 / 5; change = true; } if (n10 != 0) { if (change) { path += "+"; } path += "10*" + n10 / 10; change = true; } if (n20 != 0) { if (change) { path += "+"; } path += "20*" + n20 / 20; change = true; } if (n50 != 0) { if (change) { path += "+"; } path += "50*" + n50 / 50; change = true; } if (n100 != 0) { if (change) { path += "+"; } path += "100*" + n100 / 100; change = true; } System.out.println(path); } }
发表评论
-
查找任意两个节点的公共父节点
2011-11-04 00:42 3554基本思路是对需要查找的节点赋权值为1,其它节点权值为0.那么只 ... -
树中任意两个节点之间的距离
2011-11-04 00:28 9624树中任意两个节点之间的距离是指,从一个节点到另一个几点之间的一 ... -
用5,7,12加减运算,求最少步数得到任意数n
2011-11-03 23:59 1270package www.viking.com.algori ... -
线段重合问题
2011-11-01 13:21 2978问题:y=ax+b; 有很多线段{x0,y0,x1,y1}{ ... -
区间覆盖问题
2011-11-01 13:00 1651问题: 有很多区间,比如[1.1,3.4] [1,3] [-1 ... -
数组循环移位
2011-10-31 22:09 1442比如1 2 3 4 5 循环移位1位 ... -
最大子矩阵的和
2011-10-25 15:30 764package www.viking.com.algo ... -
最大字段和
2011-10-25 14:43 925package www.viking.com.algo ... -
有重复数的全排列
2011-10-21 18:34 8127有重复数的全排列和全排列的算法是一样的 只不过要去掉重复的序列 ... -
有重复数的组合
2011-10-21 18:33 932package com.viking.divide; ... -
无重复数组合
2011-10-21 18:30 931无重复数的组合问题 就 ... -
m n 全排列
2011-10-21 08:54 851n个字符中长度为m的全排列 public class MN ... -
子集的全排列
2011-10-21 08:51 865比如 123 1 2 3 12 21 13 31 23 32 ... -
查找无向图中的环
2011-10-19 23:51 1922static int[][] M = { { 0 ... -
无重复数的全排列问题
2011-10-18 09:51 911采用分治思想,很多书都有。。。 这里只是引用一下,因为有很几 ... -
爬台阶问题
2011-10-18 07:57 946package com.viking.dynamic; ... -
查找中间数
2011-10-18 00:21 758package com.viking.divide; ... -
整数的因子分解
2011-10-17 23:21 955package com.viking.divide; ...
相关推荐
嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集...
C++面试题笔试题C++ 数据结构算法笔试题资料合集: 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案....
中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 v中兴笔试题 中兴笔试题 ...中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题
java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 ...
大连华信去年的笔试题,可以给各位即将工作的同学一些参考
C#笔试题大全C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.,让你...
4. 组合问题:第四题是组合计数问题。从19本书中选择不相邻的5本,可以视作插空问题,使用插板法求解。总共有15个空隙,可以插入4个板子,因此总方案数为C(15,4)。计算得到D.360360。 5. 财务计算:第六题涉及复利...
2013年四川移动校招笔试题.zip 2014年中国移动招聘笔试试题及答案.pdf 2015年中国移动招聘笔试试题及答案.pdf 移动笔试真题之市场营销类--中国移动校园招聘客服人员试题及答案.pdf 移动笔试真题之技术类--2010年厦门...
java华为面试题、百度试题、腾讯试题、网易笔试题、迅雷笔试题、中兴面试题、Google笔试题
【谷歌笔试题】是全球科技巨头谷歌在招聘过程中对求职者进行能力评估的重要环节,这些题目旨在测试候选人的逻辑思维、编程技能、问题解决能力和创新思维。谷歌笔试题的难度和多样性反映了公司对于人才的高标准和对...
2. 销售人员笔试题的分类:销售人员笔试题可以分为选择题、简答题和论述题等。 3. 销售人员笔试题的特点:销售人员笔试题具有多样性、实践性和策略性等特点。 销售人员笔试题的知识点 1. 市场营销战略:无差异...
c++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rar
以上题目展示了谷歌笔试题的特点:侧重于考察候选人的算法设计能力和解决问题的思维方式。通过这些题目,不仅能够检验应聘者的基础理论知识掌握程度,还能评估其在实际问题面前的创新思考能力。对于准备参加谷歌及...
Google笔试题的描述显示,该笔试尽管人数没有限制,但试题本身具有一定难度,特别是对于那些没有做好准备的应聘者。笔试题主要考察应聘者的编程和算法能力,尤其是递归算法的应用。下面将详细介绍笔试中提及的几个...
JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题...
一些面试笔试题文档,包括:Google笔试题,百度试题,北京中软笔试题,广东北电面试题,华为试题,腾讯试题,网易笔试题,迅雷笔试题,中兴面试题。
阿里巴巴校招前端笔试题 校招前端笔试题.pages
这份“百度google笔试题汇总”压缩包文件提供了丰富的资源,帮助那些准备实习或全职工作的应聘者提升自己的技术水平和解决问题的能力。 首先,我们来看看“Google笔试题.doc”和“Google笔试题 (1).doc”。这些文档...
BAT华为美团360谷歌等各大互联网公司软件校招面试笔试试题资料240MB合集: 2015年校招腾讯游戏策划笔试题目.docx 2015年百度校招产品经理笔试题目汇总.docx 2015年网易产品策划笔试题.docx 2015年网易用户研究员笔试...