该用户从未签到
|
* C' u4 R1 w: p& |
import java.util.Scanner;
0 X4 R' L( _! i0 `# b* K( s" \/**
9 V3 {) w, P$ |* H$ m6 p7 v2 x: V*使用数组实现约瑟夫环问题
. o& q5 W) u# l*由m个人围成一个首尾相连的圈报数。) _1 A) H7 x" V0 U/ D4 [5 K7 Z
*从第一个人开始,从1开始报数,报到n的人出圈,
' n3 u% F. F! @( B( W1 ]*剩下的人继续从1开始报数,直到所有的人都出圈为止。9 C B$ @3 N4 }# I
*对于给定的m和n,求出所有人的出圈顺序.7 |; Z* H. U% x+ h Z
*/1 [* H, f; l. |) P2 p) @, G% J- s |
public class RingTest{
- }0 t; j, ]+ D! c$ ]5 |( Z public static void main(String[] args){% u3 H9 w% o& X ~5 }) `
System.out.println("程序说明如下:");
+ l' s6 t; `- d' r7 Y System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");1 R& F$ Q7 {/ i+ A
//提示输入总人数& o0 s7 a0 d$ ^9 G/ \. W- j
System.out.println("请输入做这个游戏的总人数:");
0 u3 K, J0 ~- I! |% d1 Q Scanner sca=new Scanner(System.in);
& Q8 b/ F5 T9 X! A" W/ d3 u. C, M int m=sca.nextInt();* D4 ^- l2 R) c5 J; `; O
//提示输入要出圈的数值+ d2 N. X5 F3 Y
System.out.println("请输入要出圈的数值:"); - o) a% C0 Z4 l5 C8 h
int n=sca.nextInt();: W. G$ I+ t0 j4 e
System.out.println("按出圈的次序输出序号:");
/ C0 {7 v, C3 F F% v2 S //创建有m个值的数组
! q/ W* Q3 `5 B2 O& B0 x4 U int[] a=new int[m];' c- T- y' |/ ^2 e& Q+ J
//初始长度,以后出圈一个,长度就减一' I$ y: F! e/ s/ n
int len=m;+ k3 h' ^4 Q$ r( p6 l4 z
//给数组赋值
0 W0 H- M% i5 o# g( S for(int i=0;i<a.length;i++)+ h: g/ _4 p& X5 i. k, Y
a[i]=i+1;7 i' j9 z8 q+ N' J& N) _) h
//i为元素下表,j代表当前要报的数5 S6 W4 k# o- z! @" ` {% K, }
int i=0;
% r; j) T2 C3 V5 N3 \1 a: a( C! S8 k int j=1;
6 c4 G& Y9 T9 Y- ?4 s while(len>0){
( z- r! C7 a* m2 f if(a[i%m]>0){
" ^2 o8 |8 p, y# s1 V% y if(j%n==0){//找到要出圈的人,并把圈中人数减一, P3 G3 i9 M! g0 X4 [/ F* C
System.out.print(a[i%m]+" ");
1 l1 D9 x0 g% R! d9 L" v5 @ a[i%m]=-1;
/ q7 v! V2 [" A) a* { j=1;# q, l+ n/ G/ y A; y
i++;! F$ U3 t; F; K2 s4 n$ u
len--;2 u5 ^- i M0 G" m8 ?
}else{
3 g. S/ t9 L. L% P i++;
9 s6 N0 u& R& O+ P) p" Q j++;- _( C8 S5 ~( x
}
7 g0 y! D2 l) ^ }else{//遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
2 ^$ \( k5 t: c i++;
/ [8 _: o, W6 ?& N }! D2 D N+ Y" I8 ~2 l5 K
}
' C: j* D/ R6 C+ I+ ? }1 m% H- u5 x2 y8 v1 L) m$ y6 c
}, p$ u. \/ A# P4 R1 r4 e1 G
$ d; Q7 m, g" l# {2 K: M- e* n
# ~5 i- k/ W( b: K& ?/ E |
|