钱币兑换问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4565    Accepted Submission(s): 2576

Problem Description
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
 
Input
每行只有一个正整数N,N小于32768。
 
Output
对应每个输入,输出兑换方法数。
 
Sample Input
2934
12553
 
Sample Output
718831
13137761
 
Author
SmallBeer(CML)


这道题是典型的钱币兑换问题可以用完全背包来解决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:吃豆机器人的更多相关文章

  1. HDU 3788 和九度OJ 1006测试数据是不一样的

    ZOJ问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  2. hdu 1284 钱币兑换问题 完全背包

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1284 递推公式:dp[i] = sum(dp[i], dp[i-C]) /* 钱币兑换问题 Time ...

  3. HDU 1284 钱币兑换问题(全然背包:入门题)

    HDU 1284 钱币兑换问题(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1284 题意: 在一个国家仅有1分,2分.3分硬币,将钱N ( ...

  4. HDU 1284 钱币兑换问题(普通型 数量无限的母函数)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1284 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    ...

  5. HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包)

    HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包) 题意分析 裸的完全背包问题 代码总览 #include <iostream> #include <cstdio> ...

  6. HDU 1284 钱币兑换问题 母函数、DP

    题目链接:HDU 1284 钱币兑换问题 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  7. hdu 1284 钱币兑换问题 (递推 || DP || 母函数)

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. HDU 1284 钱币兑换问题 (完全背包)

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  9. HDU 1284 钱币兑换问题 (动态规划 背包方案数)

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

随机推荐

  1. jquery回调函数callback的使用

    回调函数必须是全局函数或者静态函数,不可定义为某个特定的类的成员函数 callback函数在当前动画100%完成之后执行 $("p").hide(1000); alert(&quo ...

  2. linux(ubuntu) 遇到的问题 --1

    1.使用sudo提示用户不在sudoers文件中的解决方法 切换到root用户 su root 查看/etc/sudoers文件权限,如果只读权限,修改为可写权限 [root@localhost ~] ...

  3. 扩展ASP.NET MVC HtmlHelper类

    在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...

  4. HDU 1290 献给杭电五十周年校庆的礼物

    题解:http://www.cnblogs.com/forever97/p/3522238.html #include <cstdio> int main() { int n; while ...

  5. c++的正整数高精度加减乘除

    数值计算之高精度加减乘除 一.      高精度正整数的高精度计算 1.加法 2.减法 减法和加法的最大区别在于:减法是从高位开始相减,而加法是从低位开始相加 3.乘法:用高精度加法实现 l 乘法的主 ...

  6. LeetCode :Word Ladder II My Solution

    Word Ladder II Total Accepted: 11755 Total Submissions: 102776My Submissions Given two words (start  ...

  7. 《Java虚拟机原理图解》 1.2.2、Class文件里的常量池具体解释(上)

    [last updated:2014/11/27] NO1.常量池在class文件的什么位置? 我的上一篇文章<Java虚拟机原理图解> 1.class文件基本组织结构中已经提到了clas ...

  8. poj 2411 Mondriaan's Dream 轮廓线dp

    题目链接: http://poj.org/problem?id=2411 题目意思: 给一个n*m的矩形区域,将1*2和2*1的小矩形填满方格,问一共有多少种填法. 解题思路: 用轮廓线可以过. 对每 ...

  9. Ext JS学习第六天 Ext自定义类(一)

    此文来记录学习笔记 •我们在之前的学习,已经对ExtJS有了一个初步的认识,那么如果要学好ExtJS,对于javascript是必须的,也就是说,对于理解ExtJS底层基础架构的理解也是必须的.那么我 ...

  10. System.Web.HttpContext.Current.Session为NULL值的问题?

    自定义 HTTP 处理程序,从IHttpHandler继承,在写System.Web.HttpContext.Current.Session["Value"]的时 候,没有问题,但 ...