用java语言实现约瑟夫环(方法一)
2015-04-07 15:42
29 查看
import java.util.Scanner;
/*
* 500个小孩围一圈,数到3的退出,问剩下最后的小孩原来是多少号?
* author@
* */
public class YueSeFuHuan {
public static void main(String[] args){
Scanner sca=new Scanner(System.in);
System.out.println("输入该游戏的参与人数:");
int n=sca.nextInt();
System.out.println("输入数到退出的数字:");
int m=sca.nextInt();
sca.close();
int len=n;
int[] a=new int
;
for(int i=0;i<n;i++){
a[i]=i+1;
}
int i=0;
int j=1;
while(len>=m){
if(a[i%n]>0){ //这里判断是否被圈出去
if(j%m==0){ //这里判断是否报的数相同,是则退出该位置,且下一位重新报数
//System.out.print(a[i%n]+",");
a[i%n]=-1;
i++;
j=1;
len--;
}else{ //不相同则继续
i++;
j++;
}
}else{ //表示该位置已被圈出,跳向下一位
i++;
}
}
for(int k=0;k<n;k++){
if(a[k]>0)
System.out.print(a[k]+",");
}
}
}
/*
* 500个小孩围一圈,数到3的退出,问剩下最后的小孩原来是多少号?
* author@
* */
public class YueSeFuHuan {
public static void main(String[] args){
Scanner sca=new Scanner(System.in);
System.out.println("输入该游戏的参与人数:");
int n=sca.nextInt();
System.out.println("输入数到退出的数字:");
int m=sca.nextInt();
sca.close();
int len=n;
int[] a=new int
;
for(int i=0;i<n;i++){
a[i]=i+1;
}
int i=0;
int j=1;
while(len>=m){
if(a[i%n]>0){ //这里判断是否被圈出去
if(j%m==0){ //这里判断是否报的数相同,是则退出该位置,且下一位重新报数
//System.out.print(a[i%n]+",");
a[i%n]=-1;
i++;
j=1;
len--;
}else{ //不相同则继续
i++;
j++;
}
}else{ //表示该位置已被圈出,跳向下一位
i++;
}
}
for(int k=0;k<n;k++){
if(a[k]>0)
System.out.print(a[k]+",");
}
}
}
相关文章推荐
- 约瑟夫环的实现-链表方法
- 约瑟夫环-两种实现方法,两种时间复杂度
- 约瑟夫环各种实现方法的总结
- 约瑟夫环之数学方法【只能求最后胜利者】+ 循环链表【实现】
- 使用Java语言实现,自己主动生成10个整数(1~100,求出生成数列中的最大值和最小值,不同意使用Arrays类的sort方法
- C++循环链表之约瑟夫环的实现方法
- 用Java语言实现单向链表的方法
- 使用Java语言实现,自动生成10个整数(1~100,求出生成数列中的最大值和最小值,不允许使用Arrays类的sort方法
- 【苦练基本功1】三种方法实现约瑟夫环问题
- Python实现约瑟夫环问题的方法
- 约瑟夫环--数学方法实现
- 用java语言用sort方法实现groupby分组
- 模板方法模式(java语言实现)
- PHP实现约瑟夫环问题的方法分析
- 2106某某面试编程题:必须用Java语言实现,给出一个由元素数范围从0到N-1个唯一正整数组成的列表。设计一种方法,将该列表所有元素的元素值和其相应的索引值互换
- 两种方法实现约瑟夫环(链表,顺序表)
- 学习笔记之约瑟夫环的两种实现方法(数组&链表)
- Python实现约瑟夫环问题的方法
- C语言,数组实现约瑟夫环问题(两种方法)
- C语言实现约瑟夫环,使用循环单链表和循环数组2种方法