uva514 Rails

題目:詳見uva514.

此題就是輸入1~n的任意一種順序組合,問能否通過1,2,3,……n轉(zhuǎn)換為此組合。
此題的C鐵軌其實就是棧,特點是后進(jìn)先出,通過棧能夠改變數(shù)字的順序。

參考代碼:

#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
int rail[1005];
void yesandno(int rail[],int n) {
    stack<int> s;
    int flag = 1;
    int a = 1,b = 1;
    while (b <= n) {
        if (a == rail[b]) {
            a++;
            b++;
        }
        else if (!s.empty() && s.top() == rail[b]) {
            s.pop();
            b++;
        }
        else if (a <= n) {
            s.push(a++);
        }       
        else {
            flag = 0;
            break;
        }
    }
    if (flag == 1) {
        cout << "Yes" << endl;
    }
    else {
        cout << "No" << endl;
    }
}
int main() {
    int n;
    while (cin >> n && n) {
        for (int i = 1;i <= n;++i) {
            cin >> rail[i];
            if (rail[i] == 0) {
                cout << endl;
                break;
            }
            if (i == n) {
                yesandno(rail,n);
                i = 0;
                memset(rail,0,sizeof(rail));
            }
        }
    }
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容