丢手帕问题 java_丢手帕问题java 实现
首先,我表明,我这个人喜欢偷懒。我先在网上看了一下。把代码下下来,用工具一运行,发现结果不对。明明已经踢出去的人,还可以继续游戏。找了半天,发现网上全是一样的,呵呵,可想而知现在的人多么的懒。呵呵,没法,我只好从代码里找错误,看能不能改正。呵呵。还不错。改过来了。看来啊,凡是都要验证一下才对,网上的东西也不一定全是对了。好了,废话不多说,我把代码粘贴下来,供大家娱乐一下。我觉得写代码本身就是一种游戏。呵呵。
//数据类
class Child {
int no; //编号
Child nextChileChild = null; //指向下一个人
public Child(int no) {
this.no = no;
}
}
//链表类
//环形链表
class CycLink {
// 先定义一个指向链表第一个小孩的那个引用
// 指向第一个小孩的引用,不能动
Child firstChild = null;
Child temp = null;
int len = 0;// 表示共有几个小孩
int k;
int m;
// 设置链表大小
public void setLen(int len) {
this.len = len;
}
public void setK(int k) {
// 设置第几个人开始数数
this.k = k;
}
public void setM(int m) {
// 设置m
this.m = m;
}
public void play() {
// 1找到开始数数的人
Child temp = this.firstChild;
for (int i = 1; i < k; i++) {
temp = temp.nextChileChild;
}
// 数M下
while (this.len != 1) {
for (int j = 1; j < m; j++) {
temp = temp.nextChileChild;
}
Child temp2 = temp;// 找到要出圈的前一个小孩
// 讲数到M的小孩 退出圈
temp2=temp2.nextChileChild;
temp.nextChileChild=temp2.nextChileChild;
System.out.println("现在出圈的是" + temp2.no);
this.len--;
}
// 打印最优一个小孩
System.out.print("最后出圈的是:" + temp.no);
}
// 初始化链表
public void creatLink() {
for (int i = 1; i <= len; i++) {
if (i == 1) {
// 创建第一小孩
Child child = new Child(i);
this.firstChild = child;
this.temp = child;
} else {
if (i == len) {
Child child = new Child(i);
temp.nextChileChild = child;
temp = child;
temp.nextChileChild = this.firstChild;
} else {
// 继续创建小孩
Child child = new Child(i);
temp.nextChileChild = child;
temp = child;
}
}
}
}
public void show() {
Child temChild = this.firstChild;
do {
System.out.println(temChild.no + "###");
temChild = temChild.nextChileChild;
} while (temChild != this.firstChild);
}
}
//主方法类
public class Demo4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
CycLink cyclink =new CycLink();
cyclink.setLen(100);
cyclink.creatLink();
cyclink.setK(2);
cyclink.setM(2);
cyclink.show();
cyclink.play();
}
}
呵呵,我也只是简单测试了一下,如果大家发现我的代码有问题,请跟我说,我们一起讨论,我会虚心受教的。呵呵,毕竟我也是菜鸟。呵呵
丢手帕问题 java_丢手帕问题java 实现相关推荐
- 丢手帕问题 java_丢手帕问题,java实现
今天偶然发现一个很经典的算法问题:丢手帕问题.问题的具体描述是:N个人围成一圈,然后从第A个人开始报数(报数从1开始).报数为B的人出列,然后后面的人从新开始报数,请问,最后一个人是多少号. 刚开始觉 ...
- 丢手帕问题 java_丢手帕问题 (java实现)
/** *@author zhouhong *@fuction:丢手帕问题 */ package com.zhouhong10; import com.zhouhong10.*; public cla ...
- 丢手帕问题 java_初学java丢手帕问题
packagediushoupa;importjava.util.Scanner;publicclasstext1{publicstaticvoidmain(String[]args){CycLine ...
- 丢番图生平编程java_丢番图与麦乐鸡购买问题
在MIT公开课<计算机科学与编程导论>的Assignment2中,提到了丢番图方程,并有趣地将丢番图方程和卖麦乐鸡的问题联系到了一起. 首先让我们来看看维基百科中介绍的丢番图方程. 一.丢 ...
- 丢番图生平编程java_丢番图
[拼音]:Diufantu [外文]:Diophantus (活动于250年前后) 希腊代数学家.对他的生平事迹人们知道得很少.但流传着一首短诗(或墓志铭),用谜语的形式叙述了他的生平:"丢 ...
- jsp中如何运行java_从上帝视角看Java如何运行
有头发且有趣的码农万里挑一~ 06 有料叔 | 一位有故事的程序猿 JVM内存结构 可以看出JVM从宏观上可以分为 '内部' 及 '外部' 两个部分(便于记忆理解): '内部'包含:线程共享(公有 ...
- 我的世界最佳java_我的世界JAVA版20w47a
我的世界JAVA版20w47a是一款模拟沙盒游戏,游戏中有不同的玩法,可以让你在这里进行刺激的挑战,同时还可以制作各种物品,想要收集材料就需要去探索各个地图,你还可以与玩家互动,分享自己的创意,相互交 ...
- 我的世界海洋java_我的世界Java版开发者们畅聊水域更新
我的世界1.13水域更新将会是一次非常庞大的更新,该版本还在开发和设计中,想了解开发者们将会在海洋世界里添加什么好玩有趣的内容吗?那就赶快来看看吧! [我的世界pc版交流群1]欢迎各位小伙伴加入!群号 ...
- 计算机术语桢什么意思,请问电脑丢帧严重的“丢帧”是啥意思哦?
光学鼠标的光学传感器就像一个摄像机,它连续的高速的对定位平面进行拍照(或者说录像).这种拍照是在一个固定频率上的(有人叫它刷新率,有人叫它扫描频率,都是一样,这里就叫它扫描频率了),并且每帧画面有个尺 ...
最新文章
- debian10 简单的CA使用
- 4个步骤成功构建出一个机器学习团队
- java.lang.IllegalArgumentException: Path index does not start with a / character
- css overflow属性的测试
- LaTeX设置参考文献条目行距以及条目内行距的方法
- java画图颜色_手绘板,多种颜色选择。我抄的《疯狂java讲义》的,包我乱导的,但代码能用。...
- BZOJ1257:[CQOI2007]余数之和(整除分块)
- 经典vim插件功能说明、安装方法和使用方法
- magisk卸载内置软件_软件卸载工具的终极武器——Revo Uninstaller
- 友华PT921G光猫实现黑群晖外网唤醒
- L2TP设置-如果更改了公网IP,需要更改哪些东西?
- 基于用户标签的时间衰减因子
- Openpcd安装过程记录
- mysql the cabinet_mysql 一个较特殊的问题:You can’t specify target table ‘wms_cabinet_form’ | 很文博客...
- 机器学习第五章之决策树模型
- 去中心化云图床搭建建议:Cyberduck+4everland bucket
- 论文精读 清华ERNIE:Enhanced Language Representation with Informative Entities
- Linux学习笔记(七)创建文件
- python 获取昨天的时间
- bzoj5197 Gambling Guide