ヨセフスの問題は:n個の順序をアレンジする個人cordonsがあります。3人がサークルを終了報告一人称countin(1-3からの報告数)、および尋ね最後に残った元号数から。

まず第一に、学習の私の最大の供給源が、Baiduのは、友人の~~表バイYiboグループ、ここで友人の私のグループではないと私は学ぶことが大好き!
今日、グループはその後、突然、誰かがこの問題のトピックを提起:
順序をアレンジする個人cordonsは、nがあります。3人がサークルを終了報告一人称countin(1-3からの報告数)、および尋ね最後に残った元号数から

長い時間のためのレスリング(OK、私は..私はBaiduの上の裁判のタイトルをレビューすることを認める)、それはいくつかのアルゴリズムを見つけましたが、私はJavaまたは実際より広く考えて何人かの人々ますので、私は知りませんジャンプ、それは少し複雑ああ見えます。

その後、私は慎重に長い時間を見てきました、やっと少し良く理解し、私はそれが単純ではないと思うが、思考に航行しています。

しかし、私はまた、この粘着性がほとんどない、興味のある学生のリンクが行くと見ることができます(コンテンツの主ロット)私はかなり広い見てきた感じ:https://blog.csdn.net/weixin_38214171/article/details / 80352921

その後、私は外観を見つけるためにインターネット上で行った、と私は非常に簡単で、非常に便利なソリューションを見つけることだと思う案の定、その後、私はそのもとに説明をした、以下のソリューションです。

1つの パッケージのテスト;
2  
3  インポートjava.util.ArrayListの。
4  インポートjava.util.Listに。
5  
6  / ** 
7  *约瑟夫环问题的解决
 8  * @author sijia
 9  *
 10   * / 
11  パブリック クラスDEMO1 {
 12  
13      公共 静的 ボイドメイン(文字列[]引数){
 14          一覧<整数>リスト= 新規のArrayList <整数> ();
15          list.add(0 )。
16          list.add(1);
17          list.add(2 )。
18          list.add(3 )。
19          list.add(4 )。
20          list.add(5 )。
21          list.add(6 )。
22          list.add(7 )。
23          list.add(8 )。
24          list.add(9 )。
25          list.add(10 )。
26          list.add(11 )。
27          list.add(12 )。
28          list.add(13 )。
29          list.add(14 )。
30         List.add(15 );
 31である          List.add(16 );
 32          
33は、         
34である         // アイデアが唯一の要素まで、削除、2つの別個の要素を反復することです。アレイの開始端へのジャンプである場合には
35          INT I = 0 ;
 36          ながら(!はlist.size()= 1 ){              
 37                  // 最後の要素までトラバース、I + 2は、第2の要素に移動する正の数である
38                  IF(I> =はlist.size() - 1 ){
 39                      I = -1 ;
 40                  }
 41である                 // 最後から二番目の要素を横切る、I + 2は、第1の要素へのジャンプである
42である                 IF(I> = list.size() - 2 ){
 43が                      I = -2 44                  }
 45                  // アレイデータアレイの始端へのジャンプ完了し
46である                 
47                  Iは、I = + 2 ;
 48                  / ** 
49                     *の要素を削除し
 50                     *せないここで理解することができます。第2要素のインデックスが削除されており、0 + 2を削除します。第二に、引き続きここに来て
 51を                    、これはインデックスが2前に削除されているので?4の下で削除済みとして、マーク前方順番に要素を踏襲し、なぜ私は= 2 + 2は4になります*。
52                     *元のインデックス添字3が元のインデックスは、インデックス5 4で今、同様に今2で
 ある53                     元の標準要素4の後ろに3,4、5削除標準の下で多くの教訓を保持する:従って*。被験者の論理に沿って。
54                     私は毎回2 + *最後のラウンドは、要素を削除するので、全体的なインデックスが進められました。だから、すべての2に代わって削除+2になります
 55                     例えば、タイトルは6に数オフ1-6のカウントしているすべての5を削除する方法のうち、次のようになります。*また、私たちは変革のこの質問について考えることができますが書くのか?
56                  * 
 57                   * / 
58                  list.remove(I);
 59              
60          }
 61          / ** 
62           *最終的なプリントアウトは、その要素の残りの部分であるので、私トリッキーここで、インデックスの値と対応する要素なので、ここで要素の値を見ることができるように
 63           *、元のインデックスの要素を参照してください。あなたが最初にリストのコピーでこれを行う、その後、逆推力装置に最後に残った値を使用して、悪いことができない場合は削除されますが、他の手段によってマークすることはできません。変更するような比較的大きな
 64           Nの主題に密接に関連している値リストと配列の要素*総数は、とにかく、私は何度も試みました。
65           * / 
66          System.out.printの(List.get(0 ));
 67  
68      }
 69  
70 }

これまでのところ、問題が解決され、その後、テキストは私に二つの質問を残しました:

それの遺産ように数nと、1。この数字は除外メートル、私の数学の残留検査や何度も何度も考えて少しせっかち、間に一定の関係があります。

2.私は、コードの3を終了する個人番号Nを実現することである。このアプローチのテキストで述べています。しかし話題が終了する個人番号N 5である場合には?私はどのように書くべき?とにかく、私は現在、私はああ~~探索することができます興味のある民間の手紙をアイデアを持っています

再生するには完全な手はあなたに少しの助けは、~~~~~私はあなたにスムーズにすべての仕事をしたいものをサポートするために信者を指すように好きしてください場合は、容易ではありません!

 

おすすめ

転載: www.cnblogs.com/lisijia/p/11454561.html