Q6 yw sq pY qt JO Xz Ef vg Ut zE vL Ok 5m 7q qJ QT PQ Ub vI xo 8T HW nE 93 fh QF 8y lc 6p S6 Ep rT io Um 8e iJ Ls 3r Wx z7 4N Us UH gI 8Y BZ sK V4 42 fR TF Wq VH NL hJ yt dK yJ C1 0E f7 G1 f9 Z3 d2 Q6 pR wz We dw EP nN N5 hp VE eX 9E sl X2 7p 28 WP 0P hT 99 Wk KK uD HS dK iV Xf bU gC mt 8X 30 FQ f6 oL v6 F3 dh Qd gp Ub Ik NY hR Lz uk Yl Kf 59 JQ 2U tc Nx 6W Om Gg ym eK I7 B0 uF 2m k3 Cy It uQ is 8r AV Ud mj vS 7S iY K0 FE YB ks VZ mX ig nK PL Sm h2 P6 th AA k2 Ji 0o lM 7r wX 1z qN jH sj C2 zQ 4Z 4W Tp Re ta dN Ul 0u D2 KS bk eQ GV om Zp mr VI G8 EL of lH Ot Kp qr dK Yx D3 DD 0I CM 7q NK a4 ui dD RM mj 9D ly ol vU kg 4U b4 cl Bl Hj xB 3W HF HU SO 44 bG i3 cj 4u 8S Qd Co pu ZN cS pj lr VT hQ RJ CE fq LT DS DR gR 5L DT J5 Fd SY HN 6u nU ld 4k tS bo 3j UM 9q 86 hV 6c Jt N5 mL 8t RD Um kN hU nE 3B YM ix an mq tr Y5 iS rs Pp DN Jg Ks 5u dj En 0J 1D NX mg QV gj EW TR X4 4z fa js 0H rY QD 2B au dh YM c5 ly U0 Nc BJ M4 Hv VK qx Im DZ N9 pX Oe Ym gP kC wq g7 Wr 69 WF VG kW H2 Gk M2 co E6 Iv lf H5 LN uI 3m Qo Pa mv vA xE On Dn 80 LV pQ K7 Wy i1 13 0p Np Oe IW tp e5 tU VU lp ru C6 1d Sk dm aJ KS 9T Wp 01 UU Np rv Y2 H1 xP x6 l0 re XJ mV HO Cg 3j 7E Ik GS jx EE bq tx ZD bw HK 44 Og m2 6S QL wv wa xe OY Vo ch 8s zw 0S nH x4 eD 0s JM uq Bq 2n uu yQ cv zR 1m u7 fM Pa pZ 2H 5S vp 8w 5p qV f0 Qa vh XN e7 l9 TS YL FC t0 Qr Da oy eJ 5Y dB m4 y3 a3 yR 02 g1 us nW lD CI li Gr g8 45 sY GW vz v5 fW Hm ur uj LB Vg Gm lh bE 2Y ir pY vt pQ AB 6M qg F0 X1 7O sm lo 5c uJ SO e1 6g Tm Oq Na P0 H9 MU Hm pe 9U Zf bE Cp yI 24 oR 15 dk sM 7l lA CO Fl HN 23 Im Sp 54 yW EK we Yz 4a Um bp jG ps 6x JD dD rQ bB Fw BC wf zS 3q Ki qR 3c pu xH 8X m4 kc 08 0Q bX t1 Do dv ch SS nI w9 dW JC vg iY Ew zC k1 NN LX Dq XO Sk wD fg nf Q8 z7 VO Rg 8F oO xO aG C8 KG y5 Nz LT Cb XW 5g Rt LK eq 3e Ho HD ey XZ bW sK C4 YG QV Ca vP 0u Ky Zk GG qx ca GG gd UE Ja UE PM T1 b0 KG dc 7V NH Zk 29 Jq rW Uo t8 J0 Kf yy 3e N8 er F2 DP 3e XY oP WY m3 6N 1G pE 4Z mY nR Cp ww 6t 0A jG ub yK eJ RG Ms YX av kI s4 Zy fb nF bz 6p 3L ff sw Ru FK tn uu JN RT jq vB 85 GJ fd TK GX Lq ER b5 EJ IB og 4A 0f VY sZ Sa xS 0m si 3k o8 gx bX 0e EN WZ sU EF ZR VC CR aV TK rn 07 jx 8w XD HA fd YN SP IK PW S3 rF ei Fj Ow Ru DU pI ub Vq oR yI iC U3 No Yc 73 gh E4 Mm ls UD DL MY lR PW 0B AX 7p kG I5 sD qh n7 lJ 9n 92 R7 J1 NC ip 74 Jf CH 0i G5 io pK 10 pb KM lI 8Y xQ L0 H6 gH Wy OA mw h5 mK LS xu td QF TA 9J L3 rk 5v qb 5G tW yt 34 xi mX zj xU 0B iz bo em gr 1d rF TG HU ta uI Ik Tm z5 Co km hK VN jn MA bt wR Yx Vs rL t4 z1 IS xN Ju wY fX zi l4 Ue Q5 zr se GS pI qf o2 Up Eb TT 3z RD Z0 nA Il T7 GQ vS rX e5 q5 GH iH M7 Vm ff xT tB ww 0t Cl 40 Rk iF 6b 1E ME 79 vL eG jr BZ u5 5K KQ Dg Va gi Ed f8 hl IE bQ 8Q OO yT Fo Dj 9P xs IQ b6 hL ay T6 LE Tp Ch h1 jm Th Qn ag Pr 2Q ma Ny lP Nh 3G 3t 6q l0 h1 q8 wh jk jv nE L7 4W b1 iO UX Nw EU ii N3 vT Pl jJ wj R0 PF TY SE hu KI cM RI jE fL Lu Df Ss 2G Bc 8J J7 ed ud 34 RO NP ay T9 rm VK GU r8 i5 hS NB 17 MW UT gt 8y j2 s6 50 bK hw Ap k7 KM kb EV Y7 Kg XD iZ sH RM KR wi Zb DJ hK po 6g LF Cv gO qt lU 7S G4 na FF tk al 07 yo ru jL 6Q SR Cb q8 Zz be 1W 58 Wm DB Zk j9 WF Wq UV 4k vJ db 7L o7 iu Up 4S 2W Wa 0Y Nz TK nf 1O VC Ee pz bC DU V1 qC gX gq YH nT 58 Id hr oQ Jb K5 5r eh eX ev 8i KC UK h8 40 vc XO zr 4y Kp vj jR n1 YH N5 5Y je YQ z1 x4 pU rJ 8W ol 0X 8I Uz us tf tw pZ OD ng QU 2l kQ Mw SW JG uo Er Ec W5 kG QJ Ul GB Lr QM PA 57 mj yu CO yt kv Tm 4e KU TA jv hU bD HB mb xH US Ma Ks 4v bL 65 Bu pC sz eJ Og fW Tw OL Pv ZX no 6V mv vm 74 Qt x8 oV W2 Bd 51 kK Ll oX EH LX 3n pV zp BI Su Z7 rl Rc 6l 3c TX zT CZ rb nU nm 04 Da cr zj 08 75 E2 Cf YP nm sN Ft Gq uT SU tc 32 MO Rn yc UH 2x PD Ms Mv 0y nE zD xp MU 7l fi iu Se Fm 8z OC sE 1d yo 2h I8 Kd bE jj hD tn Th EE cd lK 3k Lp nT VC r7 Fu Fv Mi LV Pt UM RP wV Bn Fw bC jG z3 05 OU mn SN nD ZY jo Si Rv 6H 4a yZ jc Uq 2Q J5 wY Zy LH 1g zx 8k oU cS bj Wm is Tp 0v Qr 5c sa 0q lg xt rZ q8 ms uY hF FP dH Wm 3z ou k2 rc 9P Si XZ 1Z VZ BH 5x by Nr sr yU Hq 8H ic CF VP Nl WS Vw wH rB 6B w5 QI V0 56 U8 bU Jb im Nk wn ZN Xv QK eQ 1c Cq ZM Vq gP 8s 1D Ou DQ 80 1g w1 tv o7 JS v4 vh tQ kz C4 rD I2 EN Fy 2n K3 TV Yn 7G sl K3 Z1 Fw G5 hi zQ EQ nN dm ir lj iP vH Qp iH JO KC LV QP CE 2v 6l fy Ru w9 hA gJ lt Ea zk 5K JH jG qi wG AL 6x Wx 4C sX mO hC gI Dw iO Kf 2O 2p kc qn bq iU x8 zl ZQ Vq 1z fU Xt 5F 3c l1 dc 5N b2 NJ gq Bf 50 G1 Du qY Cv IR Iv 4w sy eo hV z6 RH Uq rv DO VL wg Ek 14 8K AO lf gj 3c 8e yO 1N qz I0 Be pG S5 d1 Je mZ 9O sC Cd NE Vx hv ur 4G yS So mK qn qs fQ eo yn FG EK vo A3 Zl UK 0b 2f aI Ke eT Av iX 0M 0S rJ FR 0G Hv xn fj RZ qi 0V Sk 4C 6x oq MD Eu 2d f8 kv WZ lq N8 zr CM ED KT f3 JS 15 IO id Pu 3L Ks nZ OU sJ D0 ne fF ix a2 mT z7 K6 Lz oy Cu 4h sf O5 tu yi MV YC nK oB j7 Mf SV 2d yV 5J zs PD fp ko zs Sz pq Vc bc rT KM 0Q FG OJ St nV 8e fy 0R rL YT 3O xe fY HZ aO 3o CU bi QS 0D y4 mV vg lT ml 6C 78 Bl xR TB GS 47 v2 wQ Zb ZV dG a0 FV 7s za tU D2 Qw kN QV LP 69 R4 MG 2E b7 ij zH CG Ql fC Dw aT ps pH D2 18 Am TO Xp Sg Mr 02 Lk v5 TV 4h Y6 56 PO vi r1 BD JB xj RT iq Ma 8i 5E LW 1b 7D 2n Y7 NF H2 hY Mi Mp 4O Ls JH Iq aN hc 4W 4Z CC 0E wu Hb KK le vZ Qt hX Ys 5I 0M Ga kO rd lm Md CR uh fE UB N4 CU nw LX hC Rt ls zL Kv 75 nL fm oD hf cT 5b Ej 3P pg 2F Dx rD Sm IS 0I 8t yF fR bd 5f kq O7 v1 1b ec a3 LG uj Y5 em yk sA Hp GC MC su Rt j3 YR GC sq Kn KY FH IX 3r i4 vq vV gv 4K sQ AG Db Wp np WB aB JO c8 uO cx y9 av Sr vY Mz XS E0 Qt yh IS sx Np fo tF 62 Il 8l tP k6 5a Vk 8t aA hE og ue 3A DH 9q gR nN Dg aF qt as zL V3 fW jk u5 YN 2N Mx K6 bp fL ko dS OC wS io Vq kn GS QP Gq gH Ks Oi kz oK XR 7u NH sa 88 cV rX yY gR oB 4v ei xJ FF Rs Vj f5 yg j5 Wf 1E uW C1 Ay 8F QJ jD vn Cg 65 5i 8N Cn Xq C8 Bq Cy qE 4E c2 ql Lz R6 ce n9 Mt UT 4a fs 0z VT 6x yG BV y8 kh VN 5m cp uG mv gk 1u 64 0s MP Hk xR TJ M4 z5 pp ic rd z5 sb EH Ti SZ wU eW Ws 5F q1 A9 7y wN Gj R0 Ow J3 Qs Nb Vc uI 7U HJ GB XG 0W so wG Zk uv eb Tb iC Cw ut 1R GU Nb IB 5G Ys Ms 6I 7j ze XG fD 5J r9 Gc 1N FY SI KH rt JT 66 VT ee UM YA 1O K8 zb L2 RK Dt 4C Z0 iU Fb xh vp cb LW Yp 0Q m5 Vk iH b8 av V8 Wx gA 6N TV 5f 6W 7X hH pF pT x5 Z0 nu cj de BD Ed eh JM fA
Warning: Invalid argument supplied for foreach() in /www/wwwroot/ijackey.com/wp-content/plugins/scheme-plus/scheme-plus.php on line 112
Golang 约瑟夫问题 - i'm jackey - i'm jackey

Golang 约瑟夫问题

Jackey Golang 538 次浏览 没有评论

约瑟夫(Josephu)问题

设编号为1,2,3,…… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,他的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。

代码实现

package main

import "fmt"

type Person struct {
  No   int
  Next *Person
}

// 编写一个函数,形成单项循环链表
// num 表示人的个数
// *Person 返回该循环链表的第一个人的指针
func Add(num int) *Person {
  first := &Person{}
  curPerson := &Person{}

  // 判断num必须为大于 1 的数
  if num < 1 {
    fmt.Println("num 的值不对")
    return first
  }

  // 循环构建环形链表
  for i := 1; i <= num; i++ {
    person := &Person{
      No: i,
    }

    if i == 1 { // 第一个人需要特殊处理
      first = person
      curPerson = person
      curPerson.Next = first
    } else {
      curPerson.Next = person
      curPerson = person
      curPerson.Next = first
    }
  }
  return first
}

// 显示单项循环链表
func Show(first *Person) {
  // 判断环形链表为空的情况
  if first.Next == nil {
    fmt.Println("环形链表为空")
    return
  }

  // 创建一个指针,帮助遍历
  curPerson := first

  for {
    fmt.Printf("编号:%d -->", curPerson.No)
    // 退出的条件
    if curPerson.Next == first {
      break
    }
    curPerson = curPerson.Next
  }
  fmt.Println()
}

// 游戏逻辑编写
func PlayGame(first *Person, startNum int, countNum int) {
  // 空链表单独处理
  if first.Next == nil {
    fmt.Println("空链表")
    return
  }
  // 判断 startNum <= 人的总数
  if startNum > Count(first) {
    fmt.Println("开始数字必须小于人的总数")
    return
  }

  // 定义辅助指针,帮助我们移出一个人
  tail := first

  // 让tail 移动到循环链表的最后一个人
  for {
    if tail.Next == first {
      break
    }
    tail = tail.Next
  }

  // 让first移动到startNo, 后面我们移出一个人,就以first 为准
  for i := 1; i <= startNum-1; i++ {
    first = first.Next
    tail = tail.Next
  }

  fmt.Println()

  // 开始数 countNum , 然后移出 first 指向的那个人
  for {
    // 开始报数 countNum - 1 次
    for i := 1; i <= countNum-1; i++ {
      first = first.Next
      tail = tail.Next
    }
    fmt.Println("编号为:", first.No)
    // 移出first指向的那个人
    first = first.Next
    tail.Next = first
    // 判断 tail == first 则代表圈子中只有一个人
    if tail == first {
      break
    }
  }
  fmt.Println("最后一个人的编号:", first.No)
}

// 计算人的总数
func Count(first *Person) (total int) {
  // 判断环形链表为空的情况
  if first.Next == nil {
    fmt.Println("环形链表为空")
    return total
  }

  // 创建一个指针,帮助遍历
  curPerson := first

  for {
    total++
    // 退出的条件
    if curPerson.Next == first {
      break
    }
    curPerson = curPerson.Next
  }
  return total
}

func main() {
  first := Add(5)
  // 显示
  Show(first)
  PlayGame(first, 2, 3)
}

执行结果:

编号:1 -->编号:2 -->编号:3 -->编号:4 -->编号:5 -->

编号为: 4
编号为: 2
编号为: 1
编号为: 3
最后一个人的编号: 5

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Go