放苹果问题

题目描述

把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

数据范围:0<=m<=10,1<=n<=10。

输入描述:输入两个int整数

输出描述:输出结果,int型

示例1

输入:7 3

输出:8

举例:

 总结:

  1. m=0,没有苹果,所有盘子空着,一种放法,即f(0,n) = 1;
  2. n=0,没有盘子,没办法放,即f(m,0) = 0;
  3. m=1,一个苹果,只有一种放法,即f(1,n) = 1;
  4. n=1,一个盘子,只有一种放法,即f(m,1) = 1;
  5. m<n,盘子比苹果多,多余的盘子不起作用,即f(m,n)=f(m,m);
  6. 每次放苹果都有两种放法可以选择,总的放法等于二者之和:f(m,n)=f(m,n-1)+f(m-n,n)

递归解法

//递归写法
int f(int m, int n){if(m <0 || n < 0){return 0;}if(n == 0) return 0;if(m == 0) return 1;if(m == 1 || n == 1) return 1;return f(m-n,n) + f(m,n-1);
}

动态规划

根据已知条件可写出状态方程:

  • f(0,n) = 1;
  • f(m,0) = 0;
  • f(1,n) = 1;
  • f(m,1) = 1;
  • f(m,n)=f(m,m),m<n
  • f(m,n)=f(m,n-1)+f(m-n,n)
 //动态规划int dp[11][11]= {0};//初始化for(int i=0; i<=m; ++i){for(int j=0; j<=n; ++j){if(i==1 || j ==1 || i==0){dp[i][j] = 1;}else if(i-j <0){dp[i][j] = dp[i][i];}else{dp[i][j] = dp[i-j][j] + dp[i][j-1];}}}cout<<dp[m][n]<<endl;

零钱兑换

题目描述

想兑换100元钱,有1,2,5,10四种钱,问总共有多少兑换方法

#include <iostream>
#include <vector>
using namespace std;
const int moneys = 100;
int coins[] = { 1,2,5,10 };//m 是剩余的钱,n 是剩余可选择的面值
int getExchageTimes(int m, int n) {//钱为0的情况if (m == 0) return 1;//不能兑换的情况if (m < 0 || n <= 0) return 0;//选择当前面值+不选择当前面值return getExchageTimes(m - coins[n - 1], n) + getExchageTimes(m, n - 1);
}
const int N = 100;
int arr[N + 1] = { 1 };
int coinExchange(int n)   //非递归实现
{int i, j;//i从0 ~ 3     因为每个arr[j]都要有一次是假设兑换了coins[i],所以我们要遍历一次for (i = 0; i < 4; i++){for (j = coins[i]; j <= n; j++)//求,arr[j]的时候,可以看出arr[j] = arr[j] + arr[j-coins[i]],//对应着上面的递归方式:arr[j]就是getExchageTimes(n, m-1),//arr[j-dimes[i]]就是getExchageTimes(n-coins[m-1], m)arr[j] = arr[j] + arr[j - coins[i]];}return arr[n];
}int main(void) {int a[6] = { 1,2,3 };//递归cout << getExchageTimes(moneys,4) << endl;//动态规划cout << coinExchange(1) << endl;return 0;
}

参考文章:

动态规划--换零钱

从放苹果问题到零钱兑换问题(动态规划)相关推荐

  1. 322. 零钱兑换 golang 动态规划

    题目 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: ...

  2. 98. Leetcode 518. 零钱兑换 II (动态规划-完全背包)

    完全背包: 如果求组合数: 外层for遍历循环物品,内层for遍历循环背包容量 如果求排列数: 外层for遍历循环背包容量, 内层for遍历循环物品 步骤一.确定状态: 确定dp数组及下标含义 这里的 ...

  3. leetcode 322. Coin Change | 322. 零钱兑换(动态规划)

    题目 https://leetcode.com/problems/coin-change/ 题解 也许是第一次在没看答案的情况下写的动态规划- 第一反应是,这题不是广义背包吗?想了一下,不是,因为广义 ...

  4. 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题

    动态规划(Dynamic Programming)思路和Python解题示例 动态规划是一种主要用来优化朴素递归的方法,每当输入不同值调用递归函数出现大量重复的(子)输入和调用(返回结果)时,就可以考 ...

  5. 算法训练Day44 动态规划专题- 背包问题 | 完全背包基础知识;LeetCode518. 零钱兑换(装满背包有多少种方法,组合数);377.组合总和IV(装满背包有多少种方法,排列数)

    前言: 算法训练系列是做<代码随想录>一刷,个人的学习笔记和详细的解题思路,总共会有60篇博客来记录,计划用60天的时间刷完.  内容包括了面试常见的10类题目,分别是:数组,链表,哈希表 ...

  6. 动态规划学习:零钱兑换

    change 一.零钱兑换问题I 二.零钱兑换问题II 一.零钱兑换问题I 给定一组面额硬币,每组硬币可能有多个,给定一个总金额amount,求组成总金额所需的最少硬币数,若组不成返回-1 代码实现 ...

  7. 从《零钱兑换》开始的《背包问题》

    1. 零钱兑换 Leetcode里有这样一个问题,LeetCode322. 零钱兑换: "给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额.计算并 ...

  8. leetocde 518 零钱兑换II

    前言 题目:518. 零钱兑换 II 参考:完全背包问题-大草.零钱兑换 II-力扣官方题解 提交代码 我可以理解01背包的滚动数组,但是我理解不了完全背包的滚动数组. 理解不了,便用二维数组.虽然二 ...

  9. LeetCode 322. 零钱兑换

    322. 零钱兑换 难度 中等 给你一个整数数组 coins ,表示不同面额的硬币:以及一个整数 amount ,表示总金额. 计算并返回可以凑成总金额所需的 最少的硬币个数 .如果没有任何一种硬币组 ...

最新文章

  1. 带你了解『百度智能云发布云智一体的AI开发全栈模式』
  2. 思考如何保证线程并行的数据安全性
  3. 关于自动布局更新约束方法的总结
  4. 快速替换图片的组合-AE-样片!
  5. sql between 效率高吗_整个SQL语句的执行效率都靠它了...
  6. Python 父目录获取
  7. oracle optimizer_index_cost_adj,OPTIMIZER_INDEX_COST_ADJ与成本计算
  8. STC89C52RC的AD7705读写实验(软件SPI)
  9. 将多个文件合并为一个文件
  10. chrome报Slow network is detected.
  11. Windows10修改本地用户账户名(彻底修改)
  12. matlab复数方程的根,matlab解超越方程的复数根
  13. java设计模式adapter,java设计模式-适配器模式(Adapter)
  14. Linux系统配置网卡ip地址
  15. 剑指offer-二叉树(python)
  16. android设置EditText为不可编辑状态
  17. 关于f(tx,ty)=t^nf(x,y)的学习
  18. 全自动配色网站。前端人员练手项目。专业配色网站
  19. 数据结构 作业答案 第1章 绪论
  20. 如何在 IIS 中添加 MIME 类型

热门文章

  1. linux实验报告一,Linux实验报告6参考答案.doc
  2. HEHL6下配置GCC及KVM安装
  3. 翻译GDC演讲《精心制作一个微小的开放世界:‘A Short Hike‘ 事后分析》(1):立项,画风
  4. 【网络请求之Axios】axios的基础用法
  5. SLAM第五讲点云拼接思路笔记
  6. Windchill 10.0 建模,定义BLOB字段
  7. 学习率和BatchSize对模型的影响
  8. 2021中国奢华品报告:内地消费信心恢复至新冠疫情前水平,香港地区消费信心基本恢复...
  9. 基于Sentry高效治理前端异常
  10. 基于单片机的噪声监测系统设计(#0474)