我是靠谱客的博主 无辜海燕,最近开发中收集的这篇文章主要介绍约瑟夫环问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

约瑟夫环问题:使用有80个小朋友手拉手围成一圈,由第一个小朋友开始从1开始数,数到3的小朋友退出,再从后面的小朋友从1数起,数到3的再退出,以此游戏下去,问最后剩下哪个小朋友? 代码如下:

public void findChild(){
//定义一个数组,长度80,代表80个小朋友
int[] childs = new int[80];
//给小朋友编号
for (int i=0;i<childs.length;i++) {
childs[i] = i+1;
}
//设置计数器,进行数数
int count = 0;
//记录退出小朋友人数
int number = 0;
//记录数组下标
int i = 0;
//当退出人数小于(总人数-1)时遍历小朋友数组,数到3的小朋友退出
while(number<childs.length-1){
for(i=0;i<=childs.length-1;i++){
if(childs[i] != 0){//判断小朋友编号是否为0
count++;
if(count==3){//数到3的小朋友编号变为0,
childs[i]=0;
number++;//退出人数+1
count=0;//计数器置0
}
}
}
i=0;//重新遍历数组
}
//遍历数组,找出编号不为0的小孩
for (int j=0;j<childs.length;j++) {
if(childs[j]!=0){
System.out.println("最后剩下孩子编号为"+childs[j]);
}
}
}

 

最后

以上就是无辜海燕为你收集整理的约瑟夫环问题的全部内容,希望文章能够帮你解决约瑟夫环问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部