365. 水壶问题-暴力模拟倒水过程-递归法
365. 水壶问题-暴力模拟倒水过程-递归法
有两个水壶,容量分别为 jug1Capacity 和 jug2Capacity 升。水的供应是无限的。确定是否有可能使用这两个壶准确得到 targetCapacity 升。
如果可以得到 targetCapacity 升水,最后请用以上水壶中的一或两个来盛放取得的 targetCapacity 升水。
你可以:
装满任意一个水壶
清空任意一个水壶
从一个水壶向另外一个水壶倒水,直到装满或者倒空
示例 1:
输入: jug1Capacity = 3, jug2Capacity = 5, targetCapacity = 4
输出: true
解释:来自著名的 “Die Hard”
示例 2:
输入: jug1Capacity = 2, jug2Capacity = 6, targetCapacity = 5
输出: false
示例 3:
输入: jug1Capacity = 1, jug2Capacity = 2, targetCapacity = 3
输出: true
int r;bool f(int a,int b,int c,int now_a,int now_b,int **abr){abr[now_a][now_b]=1;if(r==1){return true;}// printf("ab %d %d %c",now_a,now_b);if(now_a==c||now_b==c){r=1;// printf("dfasf");return true;}if(now_a+now_b==c){r=1;return true;}if(now_b+now_a>a+b){return false;}if(now_a<a){if(abr[a][now_b]==0)if( f(a,b,c,a,now_b,abr)){return true;}}if(now_b<a){if(abr[now_a][b]==0)if(f(a,b,c,now_a,b,abr)){return true;}}if(now_a<=a&&now_b<=b&&(now_a+now_b)!=0){if(abr[now_a][0]==0)if(f(a,b,c,now_a,0,abr)){return true;}if(abr[0][now_b]==0)if(f(a,b,c,0,now_b,abr)){return true;}if(now_a+now_b<b){if(abr[0][now_a+now_b]==0)if(f(a,b,c,0,now_a+now_b,abr)){return true;}}else{if(abr[now_a+now_b-b][b]==0)if(f(a,b,c,now_a+now_b-b,b,abr)){return true;}}if(now_a+now_b<a){if(abr[now_a+now_b][0]==0)if(f(a,b,c,now_a+now_b,0,abr)){return true;}else{if(abr[a][now_a+now_b-a]==0)if(f(a,b,c,a,now_a+now_b-a,abr)){return true;}}}}if(now_a==a&&now_b<b){if(abr[a][b]==0)if(f(a,b,c,a,b,abr)){return true;}}if(now_a<a&&now_b<a){if(abr[a][b]==0)if(f(a,b,c,a,b,abr)){return true;}}return false;}
bool canMeasureWater(int jug1Capacity, int jug2Capacity, int targetCapacity){r=0;int a=fmin(jug1Capacity,jug2Capacity),b=fmax(jug1Capacity,jug2Capacity),c=targetCapacity;int **abr=(int **)malloc(sizeof(int*)*(a+1));for(int i=0;i<=a;i++){abr[i]=(int *)malloc(sizeof(int)*(b+1));}for(int i=0;i<=a;i++){for(int j=0;j<=b;j++){abr[i][j]=0;}}if(a+b<c){return false;}if(f(a,b,c,0,0,abr)){return true;}return false;}
365. 水壶问题-暴力模拟倒水过程-递归法相关推荐
- [LeetCode解题报告] 365. 水壶问题
[LeetCode解题报告] 365. 水壶问题 一. 题目 1. 题目描述 2. 原题链接 二. 解题报告 1. 思路分析 2. 复杂度分析 3. 代码实现 三. 本题小结 一. 题目 1. 题目描 ...
- Leetcode.365 水壶问题
题目链接 Leetcode.365 水壶问题 mid 题目描述 有两个水壶,容量分别为 x和 y升.水的供应是无限的.确定是否有可能使用这两个壶准确得到 z升. 如果可以得到 z升水,最后请用以上水壶 ...
- 【算法-Java实现】 换钱的方法数(暴力递归法)
[算法-Java实现] 换钱的方法数(暴力递归法) 文章目录 [算法-Java实现] 换钱的方法数(暴力递归法) 一.问题描述: 二.问题解答: **举例:** **思路:==暴力递归==** 三.算 ...
- 牛客小白月赛28 E-会当凌绝顶,一览众山小 线段树+二分暴力模拟
牛客小白月赛28 E-会当凌绝顶,一览众山小 线段树+二分暴力模拟 题意 思路 Code 传送门: https://ac.nowcoder.com/acm/contest/16081/E 题意 登山顺 ...
- 【2018.3.24】模拟赛之四-ssl2548 旋转【暴力模拟】
正题 大意 给出一块黑块和白块组成的版,将其旋转90°后和之前的黑块叠加,求最初始和每次旋转后的黑块数. 解题思路 暴力模拟不解释 代码 #include<cstdio> #include ...
- Sysweld笔记:利用稳态算法加速算法模拟焊接过程的残余应力
作者:贾亚波博士,仿真秀专栏作者 在进行热力耦合的仿真过程中,如果模型足够的长并且热源速度恒定,通常其热学,相变以及热力耦合都会达到稳态的过程,因此如何直接计算稳态问题成为了大家研究的热点问题. 由于 ...
- HLJUOJ1117(暴力模拟)
八数码 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 109 Solved: 19 [Submit][Status][Web Board] Desc ...
- Pots (模拟倒水)
You are given two pots, having the volume of A and B liters respectively. The following operations c ...
- LeetCode 365. 水壶问题
365. 水壶问题 题目链接-365. 水壶问题 解题思路 裴蜀定理 裴蜀等式:若a,ba,ba,b是整数,且gcd(a,b)=dgcd(a,b)=dgcd(a,b)=d,那么对于任意的整数x,yx, ...
最新文章
- Py之lightgbm:lightgbm的简介、安装、使用方法之详细攻略
- 【转摘】如何得心应手的玩转Excel
- Leedcode9-linked-list-cycle-i
- php由哪几部分组成,微型计算机通常是由哪几部分组成?
- 如何限制浏览器使用_如何使用浪涌电流限制器NTC(一)
- WebApi_基于token的多平台身份认证架构设计(Z)
- Visual Assist X V10.4.1626.0 不错的软件,让VC++也能自动提示
- Copula函数初了解
- BP神经网络的预测模型
- 文献解读|基于转录组-蛋白质组数据联合分析对煎蛋水母毒性评价、毒素筛选及其干预
- 树莓派控制超声波测距原理及实现
- 基于websocket的跨平台通信——iPhone/iPad/Mac控制树莓派(二):Swift控制端搭建,网络延迟显示
- 得力针式打印机第一联清晰第二联不清晰解决办法
- 2022年广东省安全员A证第三批(主要负责人)考试题模拟考试题库及答案
- 为ThinkCentre M910t-NO76重装Windows7(64位)系统
- 为何需要警惕人工智能
- 电子科技大学 图论期末复习 公式快速索引
- deepin显卡驱动管理器在哪_deepin20 安装英伟达闭源驱动的步骤详解
- SV-随机约束和分布-自用
- 2022-2028全球及中国点对点微波天线行业研究及十四五规划分析报告