伪币识别问题
来源:互联网 发布:自然之名酵母水 知乎 编辑:程序博客网 时间:2024/06/14 11:25
伪币识别问题。一个袋子中装有256枚金币,其中有一枚是伪币,且已知伪币比真的金币要轻。现在给你一架天平,如何快速找出那枚伪币?使用分治策略来对该问题进行求解,设计并实现相应的分治算法。
思路:采用二分法,将一个金币分为A、B两部分,分别计算A、B部分的质量和,因为金币为偶数个且伪币比金币要轻,所以,其中一部分的质量和总比另一部分的质量和小,此时再将质量和小的部分进行二分,递归继续下去。当只剩下两个金币时,记录下质量较小的金币的位置进行输出即可。(但是金币为奇数个时,此办法行不通,因为并没有具体告诉伪币比真币轻的具体数量,如果少一个单位质量,无法进行判断)
package cn.aaa;
public class CSearch {
static int num=0;
public static void BinarySearch(int a[],int left,int right){
int sum1=0,sum2=0;
if(left+1<right){
int mid=(left+right)/2;
for (int i = 0; i < mid; i++)
sum1 = sum1+a[i];
for (int i = mid; i < right; i++)
sum2 = sum2+a[i];
if(sum1<sum2)
BinarySearch(a,left,mid);
else
BinarySearch(a,mid+1,right);
}
else if(left+1==right){
if(a[left]<a[right])
num = left;
if(a[left]>a[right])
num = right;
}
else
num = -1;
}
public static void main(String[] args) {
int a[] = {1,1,1,1,1,1,-1,1};
BinarySearch(a,0,a.length-1);
System.out.println("伪币的位置为:"+(num+1));
}
}
- 伪币识别问题
- 伪币问题
- 找出伪币问题
- 使用天平找伪币
- 分冶算法实例—找出伪币
- 标签不能识别问题
- ie6识别important问题
- sftp 不识别问题
- 桌面图标不可识别问题
- ADNROID ADB识别问题
- uiresponder手势识别问题
- ADB 无法识别问题
- 识别浮点常量问题
- 识别浮点常量问题
- 图像识别问题
- 关于Wifi识别问题
- 图像识别问题
- H5识别二维码问题
- nginx精准匹配, 一般匹配, 正则匹配
- 机器学习算法的Python实现 (3):CART决策树与剪枝处理
- Android快速开发系列 10个常用工具类
- Android:WebView基础
- 获取程序执行时的时间
- 伪币识别问题
- 【C语言】一组数据中只有一个数字出现了一次。 其他所有数字都是成对出现的。请找出这个数字。(使用位运算)
- AC自动机
- 即学即用笔记——利用for脚本实现批量移动文件/文件夹
- 工厂方法模式
- 音频-AudioComponentDescription 类型设置
- 获取系统的相关信息
- UVA 10069 dp+高精度
- javascript小方法之数组去重、数字转成逗号分隔、html元素去标签