该用户从未签到
|
: {* J1 r9 D3 l6 I$ u
import java.util.Scanner;, Y) W+ E- @: n: [
/**
# [1 d' i z; i' ?: X( z*使用数组实现约瑟夫环问题% R7 ^6 \# C8 l+ @
*由m个人围成一个首尾相连的圈报数。( w. ?6 q% {7 e1 m" k9 ^8 @2 J
*从第一个人开始,从1开始报数,报到n的人出圈,9 S) h, P; D) x5 ^' G, z
*剩下的人继续从1开始报数,直到所有的人都出圈为止。
! M X0 j n. i. [& ^*对于给定的m和n,求出所有人的出圈顺序.
9 }7 V# k6 n% [" U*/
$ P" ]5 }- G" c( Y' qpublic class RingTest{6 q1 b K5 P6 T9 m, | h
public static void main(String[] args){+ E. P$ u0 s3 s/ ~
System.out.println("程序说明如下:");+ x( R9 m2 G7 `3 `& D' u0 \& V
System.out.println("由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.");
/ o. `2 y0 W, f) {: Y J //提示输入总人数
0 l e. [1 C+ V$ `0 ? System.out.println("请输入做这个游戏的总人数:");
. k |: @) ]$ d8 y Scanner sca=new Scanner(System.in);5 G7 ` Q& Q8 h3 j
int m=sca.nextInt();) C3 S8 i+ h) U% q9 Z; d9 @
//提示输入要出圈的数值1 ]( n$ Q/ v9 [, ?( f
System.out.println("请输入要出圈的数值:"); : x1 a( Z0 g, w5 }+ O; _& E5 q0 G
int n=sca.nextInt();
$ G. ^8 a# \0 D/ q0 k0 E System.out.println("按出圈的次序输出序号:"); : ~% ]* B4 K" T/ ]( {5 U% P8 G h/ z7 S7 F
//创建有m个值的数组7 ~7 S5 Y; U; u7 U' @' I0 q. E
int[] a=new int[m];- `# z" Y2 ?8 e9 _0 N/ z$ h# J
//初始长度,以后出圈一个,长度就减一$ _+ G7 t5 K1 _% ~; h
int len=m;+ B y! C, q; G" P
//给数组赋值
8 W1 z6 ^- m' t for(int i=0;i<a.length;i++)+ T3 S; v- ~. U/ _( l, E
a[i]=i+1;/ q6 t% h/ T2 L8 R) `$ n4 _4 G
//i为元素下表,j代表当前要报的数
$ a3 x- n. W1 }3 M- g int i=0;
% Y$ b K; \' U1 \; e8 W int j=1;
, T' N& N3 b& b p/ ` while(len>0){
$ E" C, ?0 t9 B6 b# B if(a[i%m]>0){3 C: t& o+ h3 W( H' F
if(j%n==0){//找到要出圈的人,并把圈中人数减一
9 x7 Z g" j. d+ z% q8 r, X4 y/ Q0 K: W System.out.print(a[i%m]+" ");
1 ]% O( L" _) l8 J4 H8 _ a[i%m]=-1;
: z9 M; t: X K& i6 M j=1;
, x9 {! H# I3 J' h9 C6 K i++;
/ o7 `/ m/ x) Q1 x0 q2 [ len--;: ^. Z2 [8 T" x
}else{7 v) v+ t* ]+ q, z0 Z8 s: X, j1 ^
i++;8 j+ N$ D$ P- |+ q" r4 {
j++;
" g) x) p% c6 | f' I/ G! U }
% T! b" r& |2 N9 @" V- Q; I" F }else{//遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数
6 q7 k2 {' w, O; |/ I. b i++;( t6 h" W4 ^9 p+ R @6 y7 @. k& l
}
1 c" L$ Z' g# ~4 ?" C: K) Q# V3 f }
& i- ?1 l) Q% E. m6 | }
; ]' c2 f; W# f; L! d! V}
7 v/ U' f; C3 O- \" q
# A. y8 i+ J3 m( R
$ y& g: c4 \6 f- n |
|