该用户从未签到
|
6 c \' ~, |, B3 \+ J% aimport java.util.Scanner;
6 c, s9 O0 i. u6 `5 [/**
0 g" @# [9 M- d2 L; m" k*使用数组实现约瑟夫环问题5 Q& ~/ u% d) E
*由m个人围成一个首尾相连的圈报数。
1 T+ L- _9 z% }$ s* z( s*从第一个人开始,从1开始报数,报到n的人出圈,
% _6 p7 a) R& `- x: M5 B% b*剩下的人继续从1开始报数,直到所有的人都出圈为止。) r S; I$ E5 T. e5 \: U* U. }
*对于给定的m和n,求出所有人的出圈顺序.
6 z7 m5 |1 S! d7 w$ @! J* V* D0 ]*/5 O0 I7 t8 e! I2 O" F2 P3 Y/ h
public class RingTest{0 @$ Q% z5 ?. S) f) z
public static void main(String[] args){3 E# L6 S( f" o: ]
System.out.println("程序说明如下:");
" i3 N; s& d% g) A System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
+ u2 Q: x$ d, I3 w. Z //提示输入总人数! p8 B i9 N# k
System.out.println("请输入做这个游戏的总人数:");9 {2 X3 u7 O, j+ c0 H4 Q
Scanner sca=new Scanner(System.in);5 u7 `* a; v( l& g( D1 G5 g$ Y
int m=sca.nextInt();
; d$ r1 u- E' x9 D) [# ] //提示输入要出圈的数值
3 D Q/ B3 @/ J" \7 G* t System.out.println("请输入要出圈的数值:");
# C# A! Z# D5 U5 h8 R int n=sca.nextInt();
9 T" f3 \! S$ N1 l1 U% ?9 y System.out.println("按出圈的次序输出序号:"); * B% e& T, c9 |" M
//创建有m个值的数组
0 e9 |& s; }! g; V3 r+ [ int[] a=new int[m];
" d, `6 T/ U O6 t8 r //初始长度,以后出圈一个,长度就减一
3 r2 O# @1 R* Y int len=m;
9 M* n6 J! J4 y7 j5 R% f //给数组赋值
+ o' |, Z( Z6 A6 i5 _ for(int i=0;i<a.length;i++)
7 j& c% [2 ?. P, ~ a[i]=i+1;
: g2 m% ?7 j' `8 V8 N) d/ h. D* u //i为元素下表,j代表当前要报的数3 B% O0 f0 P. }! R: ]
int i=0;
8 @2 |5 L% |) [ int j=1;2 x/ g+ k8 Q H& k1 c# }
while(len>0){
+ w8 M) d5 A1 J# C% h' X& y if(a[i%m]>0){
' w9 N/ `( \) O; y6 G3 ^ if(j%n==0){//找到要出圈的人,并把圈中人数减一3 t y9 K2 r2 @; i( W
System.out.print(a[i%m]+" ");- L( v, Q. n- P- {0 e
a[i%m]=-1;( I1 g4 v% _( ]" Z2 |$ F6 V( h6 F
j=1; ]& Y" n4 x3 v; z6 ^2 k
i++;
6 D" L# l5 ?8 T1 m5 i( z+ ^" I3 Y+ T len--;7 w5 \! R9 N; @- {* S$ H# o
}else{9 }7 J0 R* m2 [, z1 L
i++;1 _2 L0 K, O! k
j++;
& t" v/ t9 l( m8 d( w* E }
8 C8 P- v. [/ c }else{//遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
- r0 M8 T h" n. C; E, s$ M i++;, p+ } O" M6 I, I1 v6 b
}5 h9 e% y' i& P
}1 }' U! i4 E# X9 C: \
}
Z8 U8 w) K! C, \( D1 U% \" }}* @3 g' ]/ k. R# p
' b3 {+ l# g C6 [) p& I, \; \% M# a8 W# s3 `
|
|