该用户从未签到
|
- ^" v$ [* q+ h7 d
import java.util.Scanner;, }8 Z7 M$ \! p3 S* l) x- O
/**
7 M% n i6 z5 i9 [' m" _*使用数组实现约瑟夫环问题/ `/ D# \4 }/ R* Y' ^! Q7 h! u! @
*由m个人围成一个首尾相连的圈报数。- ~* Q( v- w" W% s1 h4 x
*从第一个人开始,从1开始报数,报到n的人出圈,
[, O( y2 c1 w) C*剩下的人继续从1开始报数,直到所有的人都出圈为止。
6 ]4 M5 M" Y; e% e/ x*对于给定的m和n,求出所有人的出圈顺序.; Z7 Z& z$ \8 b1 t
*/: ~) b' w+ H+ G
public class RingTest{
! d% p; Y4 @! O$ T. ^5 W/ i, V( e public static void main(String[] args){
" f" I2 P: m# o System.out.println("程序说明如下:");9 b0 I, b8 j3 \- j4 o N) N4 ?
System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
1 o: ~+ C3 m. }! v //提示输入总人数
8 s# f5 `& ]4 g. H( T% S' s System.out.println("请输入做这个游戏的总人数:");
- H% [( ?; n* x. W! H( y9 C Scanner sca=new Scanner(System.in);8 B- L. |9 Q8 Y% c- W& T+ N2 i
int m=sca.nextInt();
1 s4 L) Z4 S' H7 j- m7 q2 K //提示输入要出圈的数值4 G$ E* b- [4 l/ Z% Q% _/ {' W. o
System.out.println("请输入要出圈的数值:"); 0 h4 a, O5 D0 [- b
int n=sca.nextInt();
2 v% T% n' f1 f+ J System.out.println("按出圈的次序输出序号:"); 8 V8 w. E2 H3 J2 @ |5 K+ f
//创建有m个值的数组
$ S, {( U) P, o! p, t int[] a=new int[m];2 E- q5 S, `: [, a& H- J' k
//初始长度,以后出圈一个,长度就减一1 U; e" ~* _1 M; W# D/ r: c
int len=m;, @7 E0 t$ O8 b. r; t
//给数组赋值) v X; u- u C* p2 J
for(int i=0;i<a.length;i++)
! I2 g/ k' U6 D4 r a[i]=i+1;( m9 Z$ N }# e4 J' j4 N
//i为元素下表,j代表当前要报的数& ^ u' B X5 m% C( m
int i=0;
) G, G5 d% {" l6 k8 T6 L+ m$ n5 q% ` int j=1;& y- P3 ^4 C; I( X, @# D+ m& K# u
while(len>0){6 y0 X1 @' O0 g+ H! N8 u5 D
if(a[i%m]>0){
" q9 x6 G* { u) Z if(j%n==0){//找到要出圈的人,并把圈中人数减一
+ d. e" O4 z+ F( w System.out.print(a[i%m]+" ");
3 {1 I/ f8 i" I& W7 U a[i%m]=-1;6 E' T- N/ R9 u# R( `4 {: ]# [
j=1;
- E* T/ _9 I* d2 G i++;
5 s& F5 R' [* k len--;
* A$ T' U* S; \; l }else{
5 V" i* A2 _( m& p5 U& I i++;' \: z J+ P- c) l' ^
j++;7 w n1 ?+ E) c/ s8 W8 l; @1 l
}
0 n! D9 K9 N) F* M: y& L0 Q$ t }else{//遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
. u" @7 V8 ^5 t$ M i++;
2 q) e# d3 e7 h6 d# a3 q }
, | i i7 U" f, [: e }, Q5 ?+ h/ j; X0 l( N
}
/ O$ s2 v' r. L9 m4 _}% c; G5 q; C3 E4 z8 c
. }* S/ P9 g* Y0 s9 l0 E4 w) l9 K m5 d: T! d- D; V
|
|