9.8---硬币问题(CC150)
这道题卡了一天。要想AC非常难。
1,第一个解决办法,优化暴力:
public class Coins {
public static int countWays(int n){
int num25 = n / 25;
long res = 0;
for(int i = 0; i <= num25;i++){
int leave25 = n - i * 25;
int num10 = leave25 / 10;
for(int j = 0; j <= num10; j++){
int leave10 = leave25 - j * 10;
int num5 = leave10 / 5;
res += num5 + 1;
res = res % 1000000007;
}
}
return (int) res;
}
}
2,第二个解决办法,递推式:
但是LTE。
dp[i][sum] = 用前i种硬币构成sum 的所有组合数。
http://www.cnblogs.com/python27/archive/2013/09/05/3303721.html
public static int myCountWays(int n){
int[][] dp = new int[5][n+1];
int[] coins = {1,5,10,25};
for(int i = 0; i <= 4; i++){
dp[i][0] = 1;
}
for (int i = 1; i <= 4; ++i)
{
for (int j = 1; j <= n; ++j)
{
dp[i][j] = 0;
for (int k = 0; k <= j / coins[i-1]; ++k)
{
dp[i][j] += dp[i-1][j - k * coins[i-1]];
}
}
}
return dp[4][n];
}
3,最好的答案:
public static int countWays(int n) {
// write code here
int[] coins={1,5,10,25};
int[] dp = new int[100001];
dp[0] = 1;
for(int i = 0;i < 4;++i){
for(int j = coins[i];j <= n;++j){
dp[j] =(dp[j]+dp[j-coins[i]])%1000000007;
}
}
return dp[n];
}
目前的理解是:
如果只有面值1,那么所有值都是1.
如果有两种面值1,5.那么dp[i] = dp[i] + dp[i - 5];从5开始算。
所以。
9.8---硬币问题(CC150)的更多相关文章
- [cc150] 硬币问题
Given an infinite number of quarters (25 cents), dimes (10 cents), nickels (5 cents) and pennies (1 ...
- 二刷Cracking the Coding Interview(CC150第五版)
第18章---高度难题 1,-------另类加法.实现加法. 另类加法 参与人数:327时间限制:3秒空间限制:32768K 算法知识视频讲解 题目描述 请编写一个函数,将两个数字相加.不得使用+或 ...
- 面试题目——《CC150》递归与动态规划
面试题9.1:有个小孩正在上楼梯,楼梯有n个台阶,小孩一次可以上1阶.2阶或者3阶.实现一个方法,计算小孩有多少种上楼梯的方式. 思路:第4个数是前三个数之和 注意:能不能使用递归,能不能建立一个很大 ...
- [LeetCode] Arranging Coins 排列硬币
You have a total of n coins that you want to form in a staircase shape, where every k-th row must ha ...
- [LeetCode] Coin Change 硬币找零
You are given coins of different denominations and a total amount of money amount. Write a function ...
- 【bzoj1708】[USACO2007 Oct]Money奶牛的硬币
题目描述 在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统的货币系统中,硬币的面值通常是1,5,10,20或25,50,以及100单位的 ...
- SQL 谜题(硬币的组合)
问题:早在ITPUB中看过有个SQL高手,喜欢出谜题,以下是一个谜题.我试用SQL SERVER解决此问题. 用1分,5分,10分,25分,50分硬币凑成一元,总共有几种组合办法? SELECT'1* ...
- 洛谷P2964 [USACO09NOV]硬币的游戏A Coin Game
题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...
- [luogu2964][USACO09NOV][硬币的游戏A Coin Game] (博弈+动态规划)
题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...
- 面试题目——《CC150》高等难题
面试题18.1:编写一个函数,将两个数字相加.不得使用+或其他算数运算符. package cc150.high; public class Add { public static void main ...
随机推荐
- TeXmacs - 所见即所得 - 专业排版软件
所见即所得,支持中文,很好用, 容易奔溃,奔溃进入不了程序时,删除文件夹 C:\Users\Perelman\AppData\Roaming\TeXmacs
- Podfile升级后的影响
之前项目里用的Podfile都是版本 0.39 后面有一天电脑格盘重装以后cocoapods装的版本是 1.0.0.beta.6 那么问题来了,在下载或者clone一下项目后,经常是需要自己安装第三方 ...
- LeetCode —— Merge k Sorted Lists
/* ** 算法的思路: ** 1.将k个链表的首元素进行建堆 ** 2.从堆中取出最小的元素,放到链表中 ** 3.如果取出元素的有后续的元素,则放入堆中,若没有则转步骤2,直到堆为空 */ #in ...
- 密钥文件snk
1.(what)是什么? 由一个程序集的标识组成并通过公钥和数字签名(针对该程序集生成)加强的名称,其中的标识包括程序集的简单文 本名称.版本号和区域性信息(如果提供的话). 2.(why)为什么 ...
- html 动态显示元素文本
jquery easy ui:http://www.runoob.com/jeasyui/jeasyui-dd-shopping.html <html> <head> < ...
- [译]angularjs directive design made easy
原文: http://seanhess.github.io/2013/10/14/angularjs-directive-design.html AngularJS directives很酷 Angu ...
- WCF服务显示的是服务器名称而不是IP地址...
打开http://xx.xx.xx.xx:端口号/Service1.svc页面显示的服务地址为: http://xx_yy_server:端口号/Service1.svc?wsdl 是显示的服务器的名 ...
- php补充
PHP 教程 echo 和 print 之间的差异:echo - 能够输出一个以上的字符串print - 只能输出一个字符串,并始终返回 1提示:echo 比 print 稍快,因为它不返回任何值. ...
- Inno Setup制作应用程序安装包
我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...
- [转]CentOS 5.3通过yum升级php到最新版本的方法
来自:www.jasonlitka.com/media 通过测试,方法三可行: 方法三 vim /etc/yum.repos.d/utterramblings.repo 输入 [utterrambli ...