C言語実例 - ヨセフスの生死ゲーム

C 语言实例C言語実例

30人が1隻の船に乗っています。超過積載のため、15人が下船する必要があります。

そこで人々は一列に並び、その並んだ位置が彼らの番号となります。

1から始めて数を数え、9まで数えた人が下船します。

これを繰り返し、船上に残っている人が15人だけになるまで続けます。どの番号の人たちが下船したのでしょうか?

実例

#include<stdio.h> int c = 0; int i = 1; int j = 0; int a[30] = { 0 }; int b[30] = { 0 }; int main() { while (i<=31) { if (i == 31) { i = 1; } else if (c == 15) { break; } else { if (b[i] != 0) { i++; continue; } else { j++; if (j != 9) { i++; continue; } else { b[i] = 1; a[i] = j; j = 0; printf("第%d号が下船しました\n", i); i++; c++; } } } } }

上記の例を実行すると、出力結果は次のようになります:

第9号下船了
第18号下船了
第27号下船了
第6号下船了
第16号下船了
第26号下船了
第7号下船了
第19号下船了
第30号下船了
第12号下船了
第24号下船了
第8号下船了
第22号下船了
第5号下船了
第23号下船了

C 语言实例C言語実例

その他の拡張