算法分析:假币寻找问题分治法java

更新时间:2023-06-26 20:39:47 阅读: 评论:0

算法分析:假币寻找问题分治法java
1. 题⽬
. 【假币寻找】有n枚外形相同的硬币,其中有⼀枚是假币,假币的重量⽐真币轻,但是⽬前仅有⼀台⽆砝码的天平。请设计⼀个算法,要求⽤最少的天平使⽤次数找出这枚假币。
2.算法分析
将数组分为两部分,分为除⼆余0和除⼆余1,(判断奇数偶数),两个数组分别之和的重量进⾏⽐较,数量较轻的那⼀组中存在假币,然后再将重量轻的那⼀组进⾏⼆分,直到找到假币。
3.图形描述
4.代码实现
package Classical;
public class Coin {
public static void main(String[] args){
//这⾥设置1为假币,2为真币
int[]coin=new int[]{2,2,2,1};教育中的心理效应
System.out.println(CheckCoin(coin,0,coin.length-1));
}花儿像什么
什么是业务
public static int CheckCoin(int coin[],int low,int high){棋牌室名字
气象数据网
while(low <high){
if((high - low+1)%2==0){
int mild =(high - low )/2+low;
if(weight(coin, low, mild)>weight(coin, mild +1, high)){
return CheckCoin(coin,mild+1,high);
}el{
return CheckCoin(coin, low, mild);
}
}el{
int mild =(high - low)/2+low;
if(weight(coin, low, mild -1)==weight(coin, mild +1, high)){
return mild;
}el if(weight(coin, low, mild -1)>weight(coin, mild +1, high)){
return CheckCoin(coin,mild+1,high);
}el{
return CheckCoin(coin,low,mild-1);
}
}
}
return(coin[low]< coin[high])? low:high;
}
public static int weight(int a[],int b,int c){
int sum =0;
for(int i = b; i <= c; i++){
sum += a[i];
酿酒技术}
调制解调器的作用return sum;
}
}
5.总结
知难而上
分治法的基本思想:将⼀个难以直接解决的⼤问题,分割成⼀些规模较⼩的相同问题,以便各个击破,分⽽治之。 分治策略:对于⼀个规模为n的问题,若该问题可以容易的解决 (⽐如规模n较⼩)则直接解决,否则将其分解为k个规模较⼩的⼦问题,这些⼦问题互相独⽴且与原问题形式相同,递归地解决这些⼦问题,然后将各个⼦问题的解合并得到原问题的解。

本文发布于:2023-06-26 20:39:47,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1046293.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:问题   假币   分治   天平
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图