当前位置: 首页 > news >正文

称重机 java_Java实现称重3次找到假球

前言

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

正文

题目要求

程序要求

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)

fiveStartIndex = 5;

}

// 第二次称重,五个,二一二分,默认左边两个球中有假球

int twoStartIndex = fiveStartIndex+0;

// 五个球中左边两个球的质量之和和右边两个球的质量之和

int leftTwoSum = sum(balls,fiveStartIndex+0,fiveStartIndex+1);

int rightTwoSum = sum(balls,fiveStartIndex+3,fiveStartIndex+4);

// 如果右边两个球中有假球

if(rightTwoSum

twoStartIndex = fiveStartIndex+3;

// 如果左右两边的四个球中没有假球,则中间的球是假球

}else if(rightTwoSum==leftTwoSum){

return fiveStartIndex+2;

}

// 第三次称重

// 如果两个球中左边是假球

if(balls[twoStartIndex]

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);

}

}

欢迎讨论和交流!

相关文章:

  • triangle java_LeetCode Triangle Java版本
  • python用户重复输入_在Python中从用户输入中查找重复值
  • java类与类之间的类图_UML类图(Class Diagram)中类与类之间的关系及表示方式(转)
  • java按时间范围过滤_Java列表按日期过滤
  • java员工表代码_基于java+ssh员工考勤管理系统源代码
  • java返回指定json格式_java返回json格式数据
  • java字符型数据的长度_Java字符串创建和长度
  • java正则表达式笔记_java正则表达式笔记
  • java打印两个字符串_Java 按字母顺序中打印两个字符串的公共字符
  • mysql 不显示警告信息_关闭mysql不安全语句警告
  • java 加载luasocket库_使用Lua的扩展库LuaSocket用例
  • mysql5.7.13 zip win7_mysql5.7.13.zip安装教程(windows)
  • 南京三只松鼠java_又出新模式?三只松鼠南京首家品牌集合店开业
  • java抛出异常齁_解決 Elasticsearch 使用 Java High Level REST Client 時出現 NoClassDefFoundError 錯誤...
  • java高速公路系统_基于jsp的高速公路收费系统-JavaEE实现高速公路收费系统 - java项目源码...
  • hexo+github搭建个人博客
  • iOS | NSProxy
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • PHP CLI应用的调试原理
  • Redis字符串类型内部编码剖析
  • Spring Boot快速入门(一):Hello Spring Boot
  • Vue.js源码(2):初探List Rendering
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 人脸识别最新开发经验demo
  • 使用权重正则化较少模型过拟合
  • 为视图添加丝滑的水波纹
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • !!Dom4j 学习笔记
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2015)JS ES6 必知的十个 特性
  • (26)4.7 字符函数和字符串函数
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • .bat文件调用java类的main方法
  • .gitignore
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net 生成二级域名
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .Net7 环境安装配置
  • .net中应用SQL缓存(实例使用)
  • .net专家(高海东的专栏)
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [<死锁专题>]
  • [AX]AX2012 SSRS报表Drill through action
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [CSS]文字旁边的竖线以及布局知识
  • [CTF]php is_numeric绕过
  • [exgcd] Jzoj P1158 荒岛野人