藍橋杯 ADV 169 演算法提高 士兵排隊問題

2021-09-01 09:18:03 字數 1014 閱讀 5205

試題

有n個士兵(1≤n≤26),編號依次為a,b,c,…,佇列訓練時,指揮官要把一些士兵從高到矮一次排成一行,但現在指揮官不能直接獲得每個人的身高資訊,只能獲得「p1比p2高」這樣的比較結果(p1、p2∈a,b,c,…,z,記為 p1>p2),如」a>b」表示a比b高。

請編一程式,根據所得到的比較結果求出一種符合條件的排隊方案。

(注:比較結果中沒有涉及的士兵不參加排隊)

輸入要求

比較結果從文字檔案中讀入(檔案由鍵盤輸入),每個比較結果在文字檔案中佔一行。

輸出要求

樣例輸入

a>b

b>d

f>d

樣例輸出

afbd

分析:高》矮,記作矮入度+1。 每次找到沒有排過隊並且入度為0的士兵,拉出來排隊,然後把緊跟後面的士兵的入度-1,一直這樣迴圈。當找不到沒排隊且入度為0的士兵,判斷:如果士兵全部排好了,正常輸出;否則出現了環,無法確定順序,輸出no answer!

#include #include #include #include using namespace std;

int main() ;

setse;

vectora[150];

memset(in, -1, sizeof(in));

string s, ans;

while (cin >> s)

while (1)

}if (cnt == 0) else

cout << "no answer!";

break;

} else

}return 0;

}

藍橋 ADV 169 士兵排隊問題

演算法提高 士兵排隊問題 試題 有 個士兵 1 26 編號依次為 佇列訓練時,指揮官要把一些士兵從高到矮一次排成一行,但現在指揮官不能直接獲得每個人的身高資訊,只能獲得 p1比p2高 這樣的比較結果 p1 p2 記為 p1 p2 如 表示 比 高。請編一程式,根據所得到的比較結果求出一種符合條件的排...

ADV 169 士兵排隊問題

試題 有 個士兵 1 26 編號依次為 佇列訓練時,指揮官要把一些士兵從高到矮一次排成一行,但現在指揮官不能直接獲得每個人的身高資訊,只能獲得 p1比p2高 這樣的比較結果 p1 p2 記為 p1 p2 如 表示 比 高。請編一程式,根據所得到的比較結果求出一種符合條件的排隊方案。注 比較結果中沒有...

藍橋杯 演算法提高 士兵排隊問題

試題 有 個士兵 1 26 編號依次為 佇列訓練時,指揮官要把一些士兵從高到矮一次排成一行,但現在指揮官不能直接獲得每個人的身高資訊,只能獲得 p1比p2高 這樣的比較結果 p1 p2 記為 p1 p2 如 表示 比 高。請編一程式,根據所得到的比較結果求出一種符合條件的排隊方案。注 比較結果中沒有...