【白俊】1158号:ジョセフス問題


https://www.acmicpc.net/problem/1158

質問する



アルゴリズムアクセスメソッド


円形リンクリストで問題を解くときにエラーが発生しました.
頭が爆発するところだった...
Qを利用すれば簡単に解ける…!
K人目が来るまで.pushpopを繰り返します.
円の形でずっと後ろに送ります.
ラウンドクリアの場合は、popでクリアします.
最初と最後に<>を付けなければなりません.
最後に個別に出力します.

に答える

#include <iostream>
#include <queue>

using namespace std;

int main(){

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    int N, K, temp;
    
    cin >> N >> K;

    queue<int> q;

    for (int i=1; i<=N; i++){
        q.push(i);
    }

    cout << '<';

    while(q.size() > 1){
        for(int i=1; i<K; i++){
            temp = q.front();
            q.push(temp);
            q.pop();
        }

        temp = q.front();
        cout << temp << ", " ;
        q.pop();
    }
    
    temp = q.front();
    cout << temp << ">\n";
    return 0;
}

整理する


シャベルを...そしてQ...

💡 注意:配置


ジェツビーのブログ