|
该用户从未签到
|
* g$ Z7 S9 P3 T: @; Nimport java.util.Scanner;
- `, z# j1 d8 C: W/**
7 a0 z- D3 m h' c, X$ D*使用数组实现约瑟夫环问题( s0 h' x# y( t: I- @' o
*由m个人围成一个首尾相连的圈报数。
+ ~) W/ m: y. D- f ^# e*从第一个人开始,从1开始报数,报到n的人出圈,% p0 i" S. i7 a' X
*剩下的人继续从1开始报数,直到所有的人都出圈为止。
* }( Q& _: G2 n. J: w*对于给定的m和n,求出所有人的出圈顺序.+ D! N8 n3 E, n1 K
*/
0 `& K, |5 d' Y! k7 ?% Hpublic class RingTest{3 Z1 w+ q2 H! h% B. k4 F' |
public static void main(String[] args){6 }: W H9 u; `& P' L S* G
System.out.println("程序说明如下:");
+ \2 G, u3 u! }+ H K( B" @1 |$ e6 h System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
/ W- K- A1 y8 D* T' |$ { //提示输入总人数) J1 w, q( u) _9 R
System.out.println("请输入做这个游戏的总人数:");7 `. ^0 \( _% s# R2 F! J! \
Scanner sca=new Scanner(System.in);7 I2 R' m7 a* @. u: C/ N
int m=sca.nextInt();
- S r4 T; m# { //提示输入要出圈的数值
5 s; V- s( X) d! k0 v System.out.println("请输入要出圈的数值:");
: V& s, b9 t( Q1 y, V int n=sca.nextInt();( t! E5 ^7 F1 `. h; \
System.out.println("按出圈的次序输出序号:");
7 S' j& U% r7 l4 {6 W //创建有m个值的数组; U/ }; T9 C; v5 E2 c
int[] a=new int[m];7 R/ W6 e( Z+ m& C1 L/ P- p
//初始长度,以后出圈一个,长度就减一
6 |! m" R& n0 z$ A5 r: } int len=m;& a) u! ~$ o+ X) @, Y+ B- ?
//给数组赋值! J7 s9 I0 S& p" f# p
for(int i=0;i<a.length;i++)2 g, W5 ^7 a5 [9 ~
a[i]=i+1;. F7 T3 n! R, S5 o) U
//i为元素下表,j代表当前要报的数
5 i2 s4 p3 a& Q7 C/ Z5 F+ k K int i=0;
1 u \& R% P T& l4 \+ N' }; C int j=1;
& x, ]5 V" e' H* m while(len>0){& v% N2 j2 a: @' X' q
if(a[i%m]>0){
$ O7 s5 c* c/ [( P- v- P if(j%n==0){//找到要出圈的人,并把圈中人数减一
; Q A2 i: V- a System.out.print(a[i%m]+" ");
9 Q- @0 [* D8 a4 X) G+ W7 A a[i%m]=-1;% \0 ^2 l! u. Q" [& E& n
j=1;
, \: t& F7 O% E$ p4 M. G% {8 C i++;
4 y) k- U" b; {( {) _$ I7 c len--;
, I0 f0 w" A) I8 S$ {" p: ] }else{
4 W/ e' I, Q6 @3 ^2 J i++;
- c+ d. B& _- t j++;
X4 Y$ T# a; ?! g# j6 ]' o5 S }
+ }' d6 y: B, [+ S* L% P }else{//遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
" |+ C7 A1 U9 x2 I' i0 |- h$ \ i++;
0 ]! l& u8 E: k, f! w s7 n }- b8 L- |7 P# D+ _
}
3 t- C% c* a/ g1 O4 z# O; B. l }
& u# }( g( G% f; j% m) k9 k}
/ ~' P5 C; {" I/ C7 `; M3 L( u1 a) _- G8 f2 L
9 S2 @+ `6 m# ]1 C9 d( M* f+ e% `
|
|