Little Monkey プログラミング C++ | Orbit

幼い頃からC++を学びましょう!Xueersi Monkey プログラミングの学習プロセスにおける質問を記録し、あらゆる瞬間を記録します。いかなる侵害も直ちに削除されますので、ご支援のほどよろしくお願いいたします。

概要の投稿を添付します: Little Monkey プログラミング C++ | 概要-CSDN ブログ


[タイトル説明]

車両を整理するには乗り換え駅Cをご利用ください車両を何台でも停めることができる駅ですが、終端が塞がれているため、 Cに入った車両は逆の順序でCから出なければなりません。各車両では、一度Cに入るとAに戻ることはできずCからBに移動するとC戻ることはできません。つまり、キャリッジはAからC、またはCからBへのみ移動できます。

【入力】

最初の行には整数 nが含まれています。

2 行目には  スペースで区切られた n 個の文字列s 1, s 2,⋯, sn が含まれており、文字列 si には大文字と小文字のみが含まれることが保証されます。

【出力】

n 個のスペースで区切られた整数を含む 1 行が  結果を表します。

【入力サンプル】

5
ab a aa ba aa

【出力サンプル】

2 3 5 4 1

【詳しいコード説明】

#include <bits/stdc++.h>
#include <stack>
using namespace std;
int n;
stack<int> st;
string s[100010], mins[100010];
int main()
{
    cin >> n;
    for (int i=1; i<=n; i++) cin >> s[i];
    
    mins[n] = s[n];
    for (int i=n-1; i>=1; i--) {
        mins[i] = min(mins[i+1], s[i]);
    }

    for (int i=1; i<=n; i++) {
        st.push(i);
        while (st.size() && s[st.top()]<=mins[i+1]) {
            cout << st.top() << " ";
            st.pop();
        }
    }
    while (st.size()) {
        cout << st.top() << " ";
        st.pop();
    }
    return 0;
}

【運用結果】

5
ab a aa ba aa
2 3 5 4 1

おすすめ

転載: blog.csdn.net/guolianggsta/article/details/133914755