该用户从未签到
|
- d" d! U; g6 f; ^3 b1 ?" y
import java.util.Scanner;, h; N7 V8 Z/ p! O1 S7 D( q2 O; s
/**, J ]/ s0 D }8 y' ]/ P
*使用数组实现约瑟夫环问题 x7 R: ~- z+ q$ P" \( C% A
*由m个人围成一个首尾相连的圈报数。9 U0 f* S$ @+ z0 k- ^5 F
*从第一个人开始,从1开始报数,报到n的人出圈,! b* |( k" G$ c
*剩下的人继续从1开始报数,直到所有的人都出圈为止。- u* H) P. L' U1 f1 _) }
*对于给定的m和n,求出所有人的出圈顺序.
" `6 d9 g! P ]' @+ q2 F*/
) R4 z' k: J. l. {public class RingTest{
! ^( w: r: A+ K# d) Y, ~2 v public static void main(String[] args){
, ~" l+ Z6 T, U9 W! v; p System.out.println("程序说明如下:");
8 A$ U# v2 Z/ g% A; ^ System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
1 X0 S# }& e$ f+ ~( g //提示输入总人数& _' U) F$ g ]! Y2 ?2 Y. M
System.out.println("请输入做这个游戏的总人数:");* N6 @; V4 k3 A+ j: K. m
Scanner sca=new Scanner(System.in);
7 |# c5 H2 Z5 H7 `# P int m=sca.nextInt();% x' y( }; A( _9 v. j6 m
//提示输入要出圈的数值+ [5 a% }9 S6 w1 Y$ Q" X9 v" R0 Y
System.out.println("请输入要出圈的数值:"); 8 Z1 r" ^/ ~5 N9 j3 |6 A9 N
int n=sca.nextInt();$ |) K* n% X, D7 s
System.out.println("按出圈的次序输出序号:"); ' M8 D1 ?3 o" ~1 ?9 V
//创建有m个值的数组8 J/ B h5 V- C
int[] a=new int[m];3 B3 q2 {* {& f) W! O- ~
//初始长度,以后出圈一个,长度就减一/ T6 v; ]' T- D! O9 u5 H
int len=m;% l6 e- m, F: _, e5 Z# @
//给数组赋值! s/ S4 A+ m* r; Z. H
for(int i=0;i<a.length;i++)
: j% f9 {4 a) v a[i]=i+1;( J: F8 X! S+ m' a$ ?; c6 F) j( e
//i为元素下表,j代表当前要报的数
5 k/ p2 r4 ?$ V _7 t3 v7 c; D9 E int i=0;+ z h% F' ^3 b; C
int j=1;
( o3 m% M0 z) j- N$ j* i7 G: K while(len>0){
' Z: G* J5 n, v# ~( i1 c% ] if(a[i%m]>0){
$ g- v/ p; ^1 r, {# u2 d if(j%n==0){//找到要出圈的人,并把圈中人数减一' _" M: F2 ? |% o* P" K
System.out.print(a[i%m]+" ");: {! K2 I& S$ t/ t: R; y2 m# D5 o; N
a[i%m]=-1;
+ u- V/ K; G6 a: E j=1;+ w, C: z. o& X! g3 h' _: P" y
i++;
* A7 G- i) _. H) g! b: N% x len--;* L) R- ~: y) E5 \* e w1 K
}else{9 A$ ^3 A% E( e: P# x& E
i++;
& P e+ f( Z/ o% I% l/ s. u j++;
$ p6 _, w) }' D }
; ?- U6 \; K3 n% m4 D4 p) q5 [6 x }else{//遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数: T: B0 t6 a& `& r% l% h
i++;) _: a6 S0 d! Z: Z+ W7 o4 d, E) u6 ~5 y- ?
}
8 q% s$ a( r, o) o$ Q Q! ` }4 n) U" M" K" W
}
) l! n* Y( q9 `+ f3 ?1 O7 i}
& k1 J0 ~ i4 x& s- k& a2 H0 [4 u) \6 L
+ w3 D8 q1 Y7 |# M" w, O+ B
|
|