约瑟环问题【java程序员面试宝典的代码更改】
来源:互联网 发布:和外国人聊天的软件 编辑:程序博客网 时间:2024/05/17 02:33
看java面试宝典这本书的时候,发现里面给出许多答案都是错误的,误导了大部分读者,基于约瑟环问题提出的代码,是不符合逻辑,因此进行修正。备注一下,建议还是看java编程思想这类书。
也希望大家批评指导,代码写得不好之处请指出。
约瑟环问题:
/** * 约瑟环问题。 * 30个人围成一个圈,从第一个开始一次报数, * 每数到第九人丢出去,剩15。 * Created by ZZ on 2017/11/2. */附上我修改后的代码
public class Ring {public static void main(String[] args) {int sum=0;int[] rings=new int[30];for(int i=0;i<rings.length;i++){rings[i]=1;}int count=0;int index=0;int leftcount=rings.length;while(leftcount>15){if(rings[index]==0){index++;if(index==rings.length){index=0;}continue;}count++;if(count==9){count=0;leftcount--;rings[index]=0;}index++;if(index==rings.length){index=0;}}for(int i=0;i<rings.length;i++){System.out.print(rings[i]+"-");if(rings[i]==0){sum++;}}System.out.print(sum);}}
1-1-1-1-0-0-0-0-0-1-1-0-1-1-1-0-1-0-0-1-1-0-0-0-1-0-0-1-1-0-15主要设计思路:
1. 设计一个30个数据的数组,初始值全部设置为1,表示没有人丢下。
2. 用count进行计数,数到9就把对应的值改为0,标示被抛下,同时剩余人数leftcount-1
3. 不同循环,超过上限30人时候,索引值归0
4. 再次循环的时候会碰到之前被设置为0的值,首先进行判断,如果遇到已经被跑下,就跳过,索引往前+1,不参与计数
5. 直到所有人被丢下
6. 最后输出环的位置对应30个人组成的环,1表示留下,0表示丢下。
阅读全文
0 0
- 约瑟环问题【java程序员面试宝典的代码更改】
- Java程序员面试宝典
- Java程序员面试宝典
- java程序员面试宝典
- JAVA程序员面试宝典
- Java程序员面试宝典
- JAVA程序员面试宝典
- JAVA程序员面试宝典
- java程序员面试宝典
- Java程序员面试宝典
- JAVA程序员面试宝典
- java程序员面试宝典
- java程序员面试宝典
- 【代码片-1】 java程序员面试宝典笔记
- 《程序员面试宝典》指针问题
- JAVA程序员面试宝典B
- JAVA程序员面试宝典C
- Java程序员面试宝典--Super
- Unity3d火箭班(1)--游戏摇杆
- python appium Attempt to re-install io.appium.settings without first uninstalling.]解决方案
- Pycharm Matplotlib 图像不显示问题
- Zabbix监控系统中内置的监控参数(Key)详解
- 表格 购物车
- 约瑟环问题【java程序员面试宝典的代码更改】
- Mysql 千万以上数据优化方法(一,SQL优化),月薪30K之路系列
- itext7学习笔记——第5章实践&example
- SharpZipLib 的使用(压缩,解压)
- HTTP协议(1)__http协议简介+请求和响应内容
- React组件通信 的几种方式-- 格式化文档
- 欢迎使用CSDN-markdown编辑器
- 使用GrepCode.com查看API很方便。
- 【DevExpress v17.2新功能预告】增强ASP.NET TreeList