以下のように、水平方向のチームアップ注文番号とラインに従って始まる定期的なトレーニングから、新兵を訓練新入社員力のキューがある:スクラッチ二から一新聞の数、ラインのレポート2つのアウト、近くに残っている方向の数が少ないに移動しますそしてもう一度やり直す三から一ライン3のうちの報告すべてのレポートの数になり、小さな数に近い移動する方向の残りの部分は2つにスクラッチ1から新聞の数を続けます。。。ゼロから開始した後、これまでに3つ以下の人の残りの数まで報告された数3に報告1の数2に1を交互に。 入力
テストデータセット、行動数Nの第一の組の複数を使用してこの問題は、新兵の数は、N行によるものより5000人の新兵の数に従いました。 出力
Nラインの合計は、新兵の数入力に対応し、残りの出力の各ラインの間に空間が存在する元の番号、番号を動員。 サンプル入力 2 20 40 サンプル出力 1 7 19 1 19 37
この観点から、実際の感触に質問は、彼らの能力は、コードに弱いままにすること
ヨセフスの問題は、似ています
いくつかの問題が、それは非常に私の心からスムーズに表現することはできません
これは、同様の話題がすぐにノックアウトすべきであることを理由に立っているが、私はしませんでした。
それをこの時間の間に良好な反射行動、
自分の責任。
また、この問題は、書き込みにキューを使用することができますが、私は書きますが、答えはノー、私はインターネットを理解していなかったではありません。
ACコード:(暴力)
書式#include <stdio.hに> する#include <iostreamの> の#include <アルゴリズム> 書式#include < 文字列の.h> の#include <スタック> の#include <キュー> 使用して 名前空間はstdを、 ブールブック[ 5050 ]; int型のmain() { int型T、N。 scanf関数(" %のD "、&T)。 しばらく(t-- ) { scanf関数(" %のD "、&N) memsetの(書籍、0、はsizeof (書籍)); INT Q = N、フラグ= 0 。 一方、(Q> 3 ) { int型のp = 0 ; 以下のために(INT iが= 1 ; I <= N; I ++ ) { もし(ブック[I] == 0 ) { P ++ ; もし((フラグ== 0 && P%2 == 0)||(フラグ&& Pの%3 == 0 )) { ブック[I] = 1 ; Q - ; } } } もし(フラグ) フラグ = 0 。 そうでなければ フラグ = 1 。 } printf(" 1 " )。 以下のために(INT iが= 2 ; I <= N; I ++ ) { もし(ブック[I] == 0 ) printf(" %dの" 、I)。 } printf(" \ n個" ); } リターン 0 ; }