数三退一问题
来源:互联网 发布:mac 移动硬盘装双系统 编辑:程序博客网 时间:2024/06/03 19:56
游戏规则:
500人围成一个圈,从第一个开始数,数到三的人退出,求最后一个人的编号
一、数组方法
arr[]--模拟人
leftCount--剩余的人
countNum-数三计数器
index--当前指向的人
public class Count3Quit {public static void main(String[] args){boolean[] arr = new boolean[500];for(int i=0; i<arr.length; i++){//构造一个布尔类型的数组模拟人 arr[i] = true;}int leftCount = arr.length;int countNum = 0;int index = 0;while(leftCount >1){//当剩余人大于1时循环if( arr[index]==true ){//当数组内容为真时,计数器+1countNum++;if(countNum == 3){countNum = 0;arr[index] = false;//计数器数到三,计数器归0,数组变为假,剩余人数减1leftCount --;}}index++;//继续数下一个人if(index == arr.length){//数到最后一个从头数index = 0;}}for(int i=0; i<arr.length; i++){if(arr[i]==true){System.out.println(i);}}}}
二、面向对象的思路
创建两个类
1.Kid——
属性:编号ID(int) 、左边的人left(kid类)、 右边的人right(kid)
2.KidCircle——
属性:首位first 、last(Kid类) 记录多少人count(int)
方法: 构造方法——循环添加人
add方法——向圈的尾端加一个人
deletle方法——删除一个人,左右连接起来
public class Count3Quit2 {public static void main(String[] args){KidCircle kc = new KidCircle(500);int countNum = 0;Kid k = kc.first;while( kc.count >1 ){countNum ++;if(countNum == 3){countNum = 0;kc.deletle(k);}k = k.right;}System.out.println(kc.first.id);}}class Kid{int id;Kid left;Kid right;}class KidCircle{int count = 0;//圈中有多少人Kid first, last;//圈的首位KidCircle(int n){for(int i=0; i<n; i++){add();}}void add(){Kid k = new Kid();k.id = count;if(count <= 0){first = k;last = k;k.left = k;k.right = k;}else{last.right = k;k.left = last;k.right = first;first.left =k;last = k;}count++;}void deletle(Kid k){if(count <=0){return;}else if (count == 1){first = last = null;}else{k.left.right = k.right;k.right.left = k.left;if(k == first){first =k.right;}else if (k == last){last = k.left;}}count --;}}
0 0
- 数三退一问题
- 数三退一问题
- 数三退一问题
- 数三退一问题---php
- 数三退一问题---java
- 数三退一问题 java
- 问题
- 问题
- 问题
- 问题
- 问题
- 问题
- 问题
- 问题
- 问题
- 问题
- 问题
- 问题
- 最短路径弗洛伊德Floyd(超详细)
- 基于拦截器和注解实现页面的访问权限控制
- FE tip
- 数据库删除为NULL的数据
- vuejs学习“递归组件”
- 数三退一问题
- 关于ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
- 想提升一下前端技术,初学日期控件datepicker(一)
- hadoop学习第八节:Hive介绍和安装部署(根据实验楼整理)
- 坑【2】父类子类以及静态块,方法中的加载顺序
- nsSkinEngine_美化_安装包_NSIS_DirectUI_界面库_插件_防解包_自动升级_Duilib_C++_软件开发
- 双指针的作用
- 【CTSC1999】巴蜀2367家园
- Python数据分析