ジョセフの生と死のゲーム(簡単な解決策) - パイソン

私は生と死の問題ジョセフ記述のゲームについて話してみましょう:

30人のGe乗客は非常に危険な、強風と大波と相まって、なぜなら深刻な過負荷で、同じ船に乗るので、海に、全体の船の乗客の半分だけをあなたに伝えるために船長は、残りの部分に生き残りました。無力な、私たちはこのアプローチに同意しなければならなかったとに同意した30 ターンでの数に数を報告した個人サークル、最初の人から始めて、9 人、彼らは海に連れて行った、その後、彼から次の人を開始します例数、数9 、その後、個人、彼女は残りまで、ように海に入れ、そして15人のこれまで個々の乗客。Q.どのような位置は、海に投げ込まれる位置です。

  

  多くの人々は、この問題を解決するには、リンクされたリストを使用することであると思いますが、リストは感情に抵抗するC忠実なの多くを引き起こして面倒で柔軟性がありません

何もシンプルで高速なソリューションは、それが存在しないこと

コースのYES

以下の文言は、任意のプログラミング言語を使用することができます私は、Pythonで最初にお見せしましょう

コードの最初の、そしてどのような私の考えを解決

{} = A 
用I範囲(1,31)
。A [I] 1 =
盛= 0
ここで盛残りの数で表される//
和= 0
//和が9に等しい場合、和をカウントするために使用されときにリセット
I = 1。
I <= 31である:
IF I == 31である:
。I = 1
盛== 15のelif:
BREAK
:他
IF A [I] == 0:
私+ = 1。
続行
他:
SUM = + 。1
IF == SUM 9:
[I] = 0
SUM = 0
印刷(I)
盛+ = 1。
他:
。私は1はI +を=
続行
右、単純な(コメント解除少ないコードワードがあれば)そう
言ったいくつかのアイデアそれは:
(1)オープンスペースプレーサー} {A
(2)1〜30に割り当てられたサイクルを用いて(メモをその位置またはインデックス0)
(3)whileループ、内部ループ、I == 31場合跳躍バック、15のサイクルを終了までの残り時間数、9への合計がクリアされ、人の価値がゼロになる
(それはそれを行うことができますが)、非常に複雑簡単なので、必要はありません
。このアイデアはいずれにも使用することができますプログラミング言語(Javaの、C、C ++など)

おすすめ

転載: www.cnblogs.com/lihangluoyue/p/12372193.html