前言

之前老师让写一个程序,就写了写,本文是我自己的写法。

这里有老师的Java实现代码,请点击

正文

题目要求

  • 程序要求

    10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球。

  • 程序设计思路

    第一次使用天平分别称5个球,判断轻的一边有假球;拿出轻的5个球,取出其中4个第二次称,两边分别放2个球:如果两边同重,则剩下的球为假球;若两边不同重,拿出轻的两个球称第三次,轻的为假球。

代码

注释应该还算详细哈。

public class Main {

    // 计算数组中连续几个球的质量之和,区间是[startIndex,endIndex]
public static int sum(int[] balls,int startIndex, int endIndex){
int ret =0;
for(int i=startIndex;i<=endIndex;++i){
ret+=balls[i];
}
return ret;
} // 输入balls是10个球的质量,该函数返回假球在该数组中的下标
public static int findFakeBall(int[] balls){
// 第一次称重,十个,五五分,默认左边五个球中有假球
int fiveStartIndex = 0;
// 如果右边五个球中有假球
if (sum(balls,5,9)<sum(balls,0,4)){
fiveStartIndex = 5;
} // 第二次称重,五个,二一二分,默认左边两个球中有假球
int twoStartIndex = fiveStartIndex+0;
// 五个球中左边两个球的质量之和和右边两个球的质量之和
int leftTwoSum = sum(balls,fiveStartIndex+0,fiveStartIndex+1);
int rightTwoSum = sum(balls,fiveStartIndex+3,fiveStartIndex+4);
// 如果右边两个球中有假球
if(rightTwoSum<leftTwoSum){
twoStartIndex = fiveStartIndex+3;
// 如果左右两边的四个球中没有假球,则中间的球是假球
}else if(rightTwoSum==leftTwoSum){
return fiveStartIndex+2;
} // 第三次称重
// 如果两个球中左边是假球
if(balls[twoStartIndex]<balls[twoStartIndex+1]){
return twoStartIndex;
// 如果两个球中右边是假球
}else{
return twoStartIndex+1;
}
} // 对函数findFakeBall()进行测试
public static void main(String[] args) {
int[] balls = {5,10,10,10,10,10,10,10,10,10}; // 所有球的质量
int fakeIndex =findFakeBall(balls);
System.out.println(fakeIndex);
}
}

作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!


Java实现3次找到假球的更多相关文章

  1. JUnit白盒测试之基本路径测试:三次找到假球

    前言 记录一次软件测试课程的课后作业,作业内容是白盒测试中的基本路径测试,步骤如下 分析程序的控制流 计算环形复杂度 找出基本路径 设计测试用例 执行测试用例(要求使用JUnit) 作业要求 使用白盒 ...

  2. java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战需求分析1.分析小球的属性: ​ 坐标.大小.颜色.方向.速度 2.抽象类:Ball ​ 设计类:BallMain—创建窗体 ​ BallJPanel—画小 ...

  3. 在cmd窗口下运行Java程序时无法找到主类的解决办法

    我是Java的初学者,昨天在cmd窗口下运行一段Java程序时总是有问题,可以编译但无法执行. 也就是javac时正确,一旦java时就不对了,提示找不到或无法加载主类,经百度谷歌再加上自己的摸索终于 ...

  4. JAVA优化篇 如何找到运行缓慢的线程

    引入 JAVA提供了一些分析DUMP的工具,比如jmap,visualvm 等 JAVA还有寻找线程状态的工具,jstack等 数据库也有检查连接数,连接状态的命令,status,processlis ...

  5. Java实现 LeetCode 802 找到最终的安全状态 (DFS)

    802. 找到最终的安全状态 在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走. 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止. 现在, 如果我们最后能走到终点,那么 ...

  6. Java实现 LeetCode 658 找到 K 个最接近的元素(暴力)

    658. 找到 K 个最接近的元素 给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数.返回的结果必须要是按升序排好的.如果有两个数与 x 的差值一样,优先 ...

  7. Java实现 LeetCode 448 找到所有数组中消失的数字

    448. 找到所有数组中消失的数字 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间 ...

  8. Java实现 LeetCode 438 找到字符串中所有字母异位词

    438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p ...

  9. java 错误:无法找到或装入主类

    1. 删除找不到的jar 2. 删除src以外的文件夹

随机推荐

  1. JVM—垃圾回收GC算法

    1 GC算法简介 算法 特点 标记-清除 分为"标记"和"清除"两个阶段 复制 可以解决效率问题,将可用的内存按容量划分为大小相等的两块. 标记-整理 先标记. ...

  2. Python 第一天学习记录

  3. Nginx之负载均衡配置(一)

    前文我们聊了下nginx作为反向代理服务器,代理后端动态应用服务器的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12430543.html:今天我们来聊 ...

  4. 使用selenium模拟登陆淘宝、新浪和知乎

    如果直接使用selenium访问淘宝.新浪和知乎这些网址.一般会识别出这是自动化测试工具,会有反制措施.当开启开发者模式后,就可以绕过他们的检测啦.(不行的,哭笑) 如果网站只是对windows.na ...

  5. 【06】openlayers 切片图层

    创建地图: //OSM图层 let source = new ol.source.OSM() //切片图层tilelayer let layers = new ol.layer.Tile({ sour ...

  6. Windows下EDK2环境的搭建以及经典的程序设计Print Hello World !-----(Linux下的待后续熟练了再更新)

    很久没有更新博客了,之前的博客末尾有提到过要写有关EDK2环境搭建的博客,现在就是完成的时候了,后续博客更新会比较规律(大概每周一篇?) 本人博客仅仅发表于博客园,本人主页为         http ...

  7. 数据挖掘入门系列教程(四点五)之Apriori算法

    目录 数据挖掘入门系列教程(四点五)之Apriori算法 频繁(项集)数据的评判标准 Apriori 算法流程 结尾 数据挖掘入门系列教程(四点五)之Apriori算法 Apriori(先验)算法关联 ...

  8. BrowserSync(保存代码后,自动刷新浏览器)

    摘要 Browsersync能让浏览器实时.快速响应您的文件更改(html.js.css.sass.less等)并自动刷新页面.更重要的是 Browsersync可以同时在PC.平板.手机等设备下进项 ...

  9. ASP.net 简单ajax实现

    <script type="text/javascript"> $(function () { var t=$("txt1").val(); $.a ...

  10. (转)协议森林13 9527 (DNS协议)

    协议森林13 9527 (DNS协议) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在周星驰的电影<唐伯虎点秋香> ...