士兵排隊問題 (裸的拓撲排序)

2021-08-16 19:39:47 字數 1362 閱讀 2862

演算法提高 士兵排隊問題  

時間限制:1.0s   記憶體限制:256.0mb 試題

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

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

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

輸入要求

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

輸出要求

若輸入資料無解,列印「no answer!」資訊,否則從高到矮一次輸出每乙個士兵的編號,中間無分割符,並把結果寫入文字檔案中,檔案由鍵盤輸入:

樣例輸入

a>b

b>d

f>d

樣例輸出

afbd

演算法提高 士兵排隊問題  

時間限制:1.0s   記憶體限制:256.0mb

試題

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

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

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

輸入要求

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

輸出要求

若輸入資料無解,列印「no answer!」資訊,否則從高到矮一次輸出每乙個士兵的編號,中間無分割符,並把結果寫入文字檔案中,檔案由鍵盤輸入:

樣例輸入

a>b

b>d

f>d

樣例輸出

afbd

題目鏈結

這個和上一道題目乙個樣子,就是最後判斷一下當所有邊都消去後,有沒有入度不為0的點

#include#include#include#includeusing namespace std;

vectormp[60];

queueq;

int exist[60],degree[60],res[60];

int main()

for(int i=0;i<26;i++)

if(exist[i] && !degree[i])

q.push(i);

while(!q.empty()) }

for(int i=0;ireturn 0;

}

士兵排隊問題 拓撲排序

演算法提高 士兵排隊問題 時間限制 1.0s 記憶體限制 256.0mb 試題 有 個士兵 1 26 編號依次為 佇列訓練時,指揮官要把一些士兵從高到矮一次排成一行,但現在指揮官不能直接獲得每個人的身高資訊,只能獲得 p1比p2高 這樣的比較結果 p1 p2 記為 p1 p2 如 表示 比 高。請編...

藍橋 士兵排隊問題 拓撲排序

演算法提高 士兵排隊問題 時間限制 1.0s 記憶體限制 256.0mb 試題 有 個士兵 1 26 編號依次為 佇列訓練時,指揮官要把一些士兵從高到矮一次排成一行,但現在指揮官不能直接獲得每個人的身高資訊,只能獲得 p1比p2高 這樣的比較結果 p1 p2 記為 p1 p2 如 表示 比 高。請編...

藍橋杯 士兵排隊問題(拓撲排序)

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