丢手帕问题-约瑟夫问题
来源:互联网 发布:php源码 鲶鱼 编辑:程序博客网 时间:2024/04/29 01:52
n个人围成一个圈,编号为1~n,从第一号开始报数,报到a的倍数的人离开,一直数下去,直到最后只有一个人,求此人编号。
2 解决思路:
使用一维数组,初始化数组的大小为n,数值全为1
初始化计数器为n,
循环数组,如果这个这个数是a的倍数,把当前的数组数值为零,计数器减一
直到 计数器等于1
遍历数组找到那个不是0的数组输出它的下标
3参考代码:
/**
* @author Carl
* @data 2017/10/11
* */
package com.tiku.sort;
import java.util.Scanner;
public class Josephus {
//丢手帕问题是约瑟夫问题的一个变种,N个小孩围成一个圈,标号是1到N,从编号为m的小孩开始数数,
//数到L个小孩退出游戏,然后在开始数L个小孩,最后剩下的小孩获胜
public static void main(String [] args){
System.out.println("请输入一个数字:");
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int counter = n;//计数器
int num = 1; //数数
int [] array = new int [n];//声明数组
//初始化数组
for(int i = 0;i<array.length;i++){
array[i] = 1;
}
while(counter > 1){
for(int j = 0;j<array.length;j++){
if(array[j] != 0){
array[j] = num;
if(num%3 == 0){
array[j] = 0;
counter --;
if(counter == 1){
break;
}
}
num ++;
}
}
}
for(int k = 0; k<n; k++){
if(array[k] != 0){
System.out.println("胜利的玩家是:" + (k+1));
}
}
}
}
- 丢手帕问题(约瑟夫问题)
- 丢手帕问题-约瑟夫问题
- 丢手帕问题(约瑟夫问题)
- 约瑟夫问题(也叫丢手帕问题)
- JAVA约瑟夫问题(丢手帕问题)
- 丢手帕问题(约瑟夫问题)
- PHP约瑟夫问题,丢手帕问题
- 丢手帕问题 (约瑟夫问题)
- 约瑟夫问题(丢手帕)的实现
- JAVA 实现 丢手帕(约瑟夫)问题
- 丢手帕问题 (约瑟夫问题)Java实现
- 丢手帕问题,约瑟夫问题(集合实现)
- 约瑟夫问题(丢手帕问题)的数组实现
- 用PHP实现丢手帕问题(约瑟夫问题)
- 循环单链表的实现,解决约瑟夫丢手帕问题
- Java约瑟夫问题(丢手帕)的双向循环实现
- 丢手绢java代码即约瑟夫问题
- 丢手帕问题
- 用Nginx来作为媒介在手机查看电脑的html网页效果
- 面向对象程序设计上机练习五(类和对象)
- python里使用正则表达式的转义字符的匹配
- HDU 3790 最短路径问题
- 模拟+贪心 [JSOI2007]麻将
- 丢手帕问题-约瑟夫问题
- python 之 numpy 库 np.max 与 np.maximum 语法
- Vim+ctags+cscope+Nerdtree+Taglist入门
- 动态规划1
- 如何提取html文本中的图片地址
- 分享一下老型号macbook pro在win10下安装BootCamp6.0驱动的方法
- 深度学习几种优化器的比较
- 03-树3 Tree Traversals Again(25 分)
- 10-11面经