hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4565 Accepted Submission(s): 2576
12553
13137761
这道题是典型的钱币兑换问题可以用完全背包来解决dp[i][j]代表前i种金钱在兑换数量为j的情况下的可能数
for(i=1;i<=c;i++)//c代表种类
for(j=0;j<=n;j++)//n代表兑换的金钱数
{
if(j<i)
dp[i][j]=dp[i-1][j];
else
dp[i][j]=dp[i][j-i]+dp[i-1][j];//关键就在这里dp[i][j]=(容量为j时装下第i种硬币的数量)+(容量为j不装下i种硬币的数量)
}
#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
int dp[4][32780];
int main()
{
int i,j,n;
dp[0][0]=1;
for(i=1;i<=3;i++)
for(j=0;j<=32770;j++)
{ if(j<i)
dp[i][j]=dp[i-1][j];
else
dp[i][j]=dp[i][j-i]+dp[i-1][j]; }
while(scanf("%d",&n)!=EOF)
{ printf("%d\n",dp[3][n]); }
}
对空间进行优化,化为一维数组
#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
__int64 dp[35600];
int main()
{
int i,j,n;
dp[0]=1;
for(i=1;i<=3;i++)
for(j=i;j<=35565;j++)//一维完全背包所以从[0,v],二维从[v,1]开始
{ dp[j]+=dp[j-i]; }
while(scanf("%d",&n)!=EOF)
{
printf("%ld\n",dp[n]); }
}
对于理解这种类型的题介绍一种简单这种题,可以很好的理解这道题
点击打开链接
九度oj
- 题目1408:吃豆机器人
-
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:823
解决:159
- 题目描述:
-
淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人。小时候,大家都玩过那个吃豆子的游戏吧,这机器人就是按照这个游戏设计的,它会朝着豆子的方向行走。不过机器人还存在一个bug,他只会朝南和朝东走。现在有一块空地,分成了n*m个格子,每个格子内有一颗豆子。机器人的起点在西北角,终点在东南角。请问机器人从起点到终点有多少种不同的方法。
- 输入:
-
每个案例输入只有一行,有n和m两个正整数,n,m均小于等于10^3。由于答案很大,所以答案对10009取余。
- 输出:
-
对于每个案例,输出一行,输出机器人从起点到终点的总方法数。
- 样例输入:
-
2 23 3
- 样例输出:
-
26
这道题用网格的方法解释
f[n][m]=f[n-1][m]+f[n][m-1];可以很好的印证上面那道题
这道题让我知道了打表可以节省很多时间,如果不打表就过不了
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[1005][1005];
int main()
{
int i,j,m,n;
memset(dp,0,sizeof(dp));
//dp[0][1] = 1;
for(i=1;i<=1002;i++)
dp[i][1] = 1;
for(i=1;i<=1002;i++)
dp[1][i] = 1;
for(i=2;i<=1002;i++)
for(j=2;j<=1002;j++)
{
//dp[1][1]=1;
dp[i][j]=(dp[i-1][j]+dp[i][j-1])%10009;
//dp[i][j]=dp[i][j]%10009;
}
while(scanf("%d%d",&m,&n)!=EOF)
{
printf("%d\n",dp[m][n]);
}
return 0;
}
hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人的更多相关文章
- HDU 3788 和九度OJ 1006测试数据是不一样的
ZOJ问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu 1284 钱币兑换问题 完全背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1284 递推公式:dp[i] = sum(dp[i], dp[i-C]) /* 钱币兑换问题 Time ...
- HDU 1284 钱币兑换问题(全然背包:入门题)
HDU 1284 钱币兑换问题(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1284 题意: 在一个国家仅有1分,2分.3分硬币,将钱N ( ...
- HDU 1284 钱币兑换问题(普通型 数量无限的母函数)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1284 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) ...
- HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包)
HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包) 题意分析 裸的完全背包问题 代码总览 #include <iostream> #include <cstdio> ...
- HDU 1284 钱币兑换问题 母函数、DP
题目链接:HDU 1284 钱币兑换问题 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1284 钱币兑换问题 (递推 || DP || 母函数)
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1284 钱币兑换问题 (完全背包)
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1284 钱币兑换问题 (动态规划 背包方案数)
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
随机推荐
- Spring+Maven配置等问题
1. 在POM中使用 统一/指定/特定 的Spring版本号 <properties> <spring.version>4.1.6.RELEASE</spring.ver ...
- web应用之监听器
package com.log.service; import java.util.Enumeration; import javax.servlet.ServletContext; import j ...
- JS中的RegExp对象常用属性和方法
JavaScript提供了一个RegExp对象来完成有关正则表达式的操作和功能,每一条正则表达式模式对应一个RegExp实例.有两种方式可以创建RegExp对象的实例. 使用RegExp的显式构造函数 ...
- Dubbo原理解析-监控
Dubbo发布代码中,自带了一个简易的监控中心实现.对于一般的小业务这个监控中心应该能够满足需求,对于那些大业务量的大公司一般都会有自己的监控中心,更加丰富的功能如常用的报警短信通知等等.这章讲解分析 ...
- BZOJ 3385: [Usaco2004 Nov]Lake Counting 数池塘
题目 3385: [Usaco2004 Nov]Lake Counting 数池塘 Time Limit: 1 Sec Memory Limit: 128 MB Description 农夫 ...
- Flex疑难小杂症
本文主要解决Flex中一些小问题,收集一些小技巧(来自网络及个人经验) flex自动换行问题 有时候由于label .button等控件中需要用到text属性显示出文本,文本太长就涉及到换行问题,解 ...
- Linux内核启动代码分析二之开发板相关驱动程序加载分析
Linux内核启动代码分析二之开发板相关驱动程序加载分析 1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c start_ke ...
- SQL中的Update、delete与inner join 联合使用
Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete居然支持inner join的update方式,太神奇了. update的格式是 update ...
- md5 加密 swfit版
在swift工程中随便建一个objective-c类,会提示你生成一个Bridging-Header,点YES,然后删除刚才建立的objective-c类,只留下[工程名]-Bridging-Head ...
- java覆写equals方法
何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念). object规范规定,如果要重写equals(),也要重写hashcode() 如何覆写equals() ...