一个国王要赏赐一个大臣30枚金币,但其中有一枚是假币。国王提出要求:只能用一个天平作为测量工具,并用尽量少的比较次数找出这枚假币,
那么余下的29枚金币就赏赐给这个大臣;否则这个大臣将得不到赏赐。已知假币要比真币的分量略轻一些。
这个问题,我们可以采用分治的办法去解决,金币分成一半后没有剩余,则假币在轻的一边;如果分成两分剩余一个,
则比较两部分,如果两个相等,则剩余的一个就是假币。如果两分中一份轻,则假币就是轻的一份中。然后在进行分治,
直到找到问题的答案
原创
2011-05-24 10:02:21
1976阅读
一个国王要赏赐一个大臣30枚金币,但其中有一枚是假币。国王提出要求:只能用一个天平作为测量工具,并用尽量少的比较次数找出这枚假币,那么余下的29枚金币就赏赐给这个大臣;否则这个大臣将得不到赏赐。已知假币要比真币的分量略轻一些。样例输入: 302 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2样例输出
原创
2022-11-01 11:14:33
171阅读
文章目录1 题目2 解析2.1 题意2.2 思路3 参考代码1 题目有假币时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序
原创
2022-05-26 01:53:52
205阅读
上周四下午到财务领电脑和社保补助,其中有一张新50元的,当时没注意,想必谁从财务领钱也不会仔细看看是真是假,工作了这么多年了,对每个公司的财务人员是太信任了。 然而信任就此打破了。
周末到医院看人。中午吃饭结帐时。服务员不收那张50的。当时我才仔细看了看,假的!! 
原创
2007-12-10 13:00:48
750阅读
2评论
wwwww
原创
2009-02-25 00:39:42
491阅读
1评论
在这篇博文中,我将分享如何使用Java中的分治法来找出数组中的众数。众数是指在数组中出现次数超过一半的元素。采用分治法可以有效地将复杂的问题分解为更简单的子问题,从而找到众数。
## 环境准备
在进行分治法找众数的实现之前,需要做好一些环境准备。
### 软硬件要求
- **硬件:**
- 至少2GHz双核处理器
- 至少4GB内存
- **软件:**
- JDK 8及以上
假币问题: 这里假币默认比真币轻,而且是每次比较两堆,即一个天平。def compare(coinA, coinB): #比较两堆硬币的重量 if sum(coinA) < sum(coinB): result = 'left' elif sum(coinA) > sum(coinB): result = 'right' else: result = 'eqal' return resultdef s.
原创
2021-12-30 15:49:03
176阅读
简单算法设计案例,打开不同的思维方式,分治法解决8枚硬币中的假币问题
原创
2022-04-17 22:32:44
3641阅读
题目描述描述赛利有12枚银币。其中有11枚真币和1枚假币。假币看起来和真币没有区别,但是重量不同。但赛利不知道假币比真币轻还是重。于是他向朋友借了一架天平。朋友希望赛利称三次就能找出假币并且确定假币是轻是重。例如:如果赛利用天平称两枚硬币,发现天平平衡,说明两枚都是真的。如果赛利用一枚真币与另一枚银币比较,发现它比真币轻或重,说明它是假币。经过精心安排每次的称量,赛利保证在称三次后确定假币。...
原创
2021-07-15 11:38:14
681阅读
点赞
题目链接: POJ 1013 http://poj.org/problem?id=1013 百炼 假币问题 http://bailian.openjudge.cn/practice/2692/ 题目大意 有12枚硬币。其中有11枚真币和1枚假币。假币和真币重量不同,但不知道假币比真币轻还是重。现在,
转载
2017-08-03 13:02:00
210阅读
2评论
Codeforces 题面传送门 & 洛谷题面传送门 智商掉线/ll 本来以为是个奇怪的反悔贪心,然后便一直往反悔贪心的方向想就没想出来,看了题解才发现是个 nb 结论题。 Conclusion. 在最优方案中,至多只有一个数组只有部分被选,其余数组要么全选要么全都不选。 证明:考虑调整。假设存在两 ...
转载
2021-09-27 19:42:00
111阅读
2评论
分治法,顾名思义就是分而治之,即把问题拆解为性质相同的小问题再处理。做了一些题后发现,分治法除了分治,名字里还少了一步,那就是合,也就是怎样通过小问题的答案得到拆分之前大问题的答案。分治法的时间复杂度:分治法并没有像二分法一样每次丢掉一半无用的解,它只是做了分离,而分离的两部分都是需要处理的,所以分治法的时间复杂度是O(n)。特例情况是当分离的两部分继续分治处理出现重复计算的情况时,就会比O(n)
原创
2021-01-06 22:39:50
353阅读
这是一道算法题:现在有100个真币和1个假币混合在一起,真假币的唯一区别只在重量上,使用一个天平不使用砝码,如何只称量两次判断真假币哪个重哪个轻。下面是我想到的一个方案:将所有硬币分成A(33)、B(33)、C(33)、D(2)这四份,进行下面的操作:1、称量A、B,若A≠B,说明A或者B中有假币,C、D中都是真币。称量A、C,若A=C,说明A、C都是真币,B中有假币,这时候第一次称量...
原创
2021-06-18 10:07:09
289阅读
问题描述问题有一个长度为n的数列,已知有一个数字出现的次数大于n/2,找出这个数字。输入输出描述例: 输入一个数组(假设:{1,3,2,2,2,4,2})输出: 数组为:{1,3,2,2,2,4,2} 众数为:2 思路不妨把这个问题转换一下。假设有k个国家的士兵,一共n个人。其中有一个国家的士兵大于n/2,问这个国家是哪个。这样转换一下是不是生动多了? 那这个国家应该怎么找呢,会是什么国
转载
2023-12-15 10:12:52
41阅读
题目如下:
一天有个年轻人来到王老板的店里买了一件礼物 这件礼物成本是18元,标价是21元。 结果是这个年轻人掏出100元要买这件礼物。 王老板当时没有零钱,用那100元向街坊换了100元的零钱,找给年轻人79元。 但是街坊後来发现那100元是假钞,王老板无奈还了街坊100元。 现在问题是:王老板在这次交易中到底损失了多少钱 ?
不错买东西过程
原创
2008-09-28 10:32:42
8805阅读
5评论
假设由29枚硬币,其中一枚假币,假币比真币重,有一个量程和精度足够的天平,怎样保证最少称重次数找出假币? 思路:将硬币分为3堆,则每堆的硬币数量为 n/3 ,但是这是在 n%3==0 的情况下才能成立,所以我们将 n 枚硬币分为 3 堆加 1 堆 余数堆(余数堆可能为0),则可分为如下(n-n%3) ...
转载
2021-10-10 17:39:00
305阅读
# 使用Java分治算法找第二大数
在数据处理和算法设计中,经常会遇到需要从一组数中找到最大值和次大值的问题。本文将通过分治算法的思想来实现一个求第二大数的算法,并用Java代码给出具体实现。另外,我们还将展示整个算法的执行过程,并使用甘特图来可视化各步骤的执行情况。
## 什么是分治算法?
分治算法是一种算法设计范式,其基本思想是将一个问题分成几个子问题,递归地解决每个子问题,然后将它们的
简介今天给大家介绍一个很经典的减治法解决假币问题的方法,改方法引自最优化算法一书。问题:假币问题在n枚外观相同的硬币中,有一枚是假币,并且已知假币较轻。可以通过一架天平来任意比较两组硬币,从而得知两组硬币的重量是否相同,或者哪一组更轻一些,假币问题(basecoinproblem)要求设计一个高效的算法来检测出这枚假币。想法解决假币问题的最自然的想法就是一分为二,也就是把n枚硬币分成两组,每组有n
原创
2021-12-08 22:36:48
970阅读
一,分治分治,字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,如果子问题的答案都求出来了,就可以求出原问题的答案。二,经典分治问题和算
原创
2021-12-27 10:29:19
196阅读
文章目录7-2 找第k小的数 (20分)输入格式:输出格式:输入样例:输出样例:题解伪代码代码7-2 找第k小的数 (20分)设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。提示:函数int partition(int a[],int left,int right)的功能是根据a[left]a[right]中的某个元素x(如a[left])对a[left]a[right]进行划分,划分后的x所在位置的左段全小于等于x,右段全大于等于x,同时利用x
原创
2020-12-17 17:15:51
534阅读