演算法 不知道有啥用的拓撲排序

2021-08-19 04:08:21 字數 1175 閱讀 8205

一共有好多件事情

事情a要再事情b(或者更多)事情做完才能做

然後排序!

(有向無環圖)

乙個網上找的圖便於理解(下列過程以此圖為例)

記錄所有點的入度和出度

找到入度為0的點加入棧中 為a

棧頂元素輸出刪除並把與棧頂元素相連的點的入度減一

刪除過程中如果有入度為零的點也加入棧中

直到輸出的數等於n完成排序

ps:如果輸出的數小於n 說明此圖有環

家譜樹

【題目描述】

有個人的家族很大,輩分關係很混亂,請你幫整理一下這種關係。

給出每個人的孩子的資訊。

輸入乙個序列,使得每個人的後輩都比那個人後列出。

【輸入】

第一行乙個整數(1<=n<=100),表示家族的人數。

接下來n行,第i行表示第i個人的兒子。

每行最後是0表示描述完畢。

【輸出】

輸出乙個序列,使得每個人的後輩都比那個人後列出。

如果有多解輸出任意一解。

【輸入樣例】

5 0

4 5 1 0

1 0

5 3

0 3 0

【輸出樣例】

2 4 5 3 1

#include

using

namespace

std;

int a[101][101];//每個點連線的下乙個點

int c[101];//出度

int r[101];//入度

int ans[101];//棧

int i,j,tot,temp,num,n;

int main()

}while(j!=0);

}for(i=1;i<=n;i++)

if(r[i]==0)

ans[++tot]=i;//如果有點入度為0 加入棧中

while(num!=n)//當輸出的數不為n是迴圈}}

可惡的C語言 不知道是啥

1.自定義資料型別 typedef c語言提供了乙個叫typedef的功能來宣告乙個已有的資料型別的新名字。例如 typedef int length 使得length成為int型別的別名。這樣length這個名字就可以代替int出現在變數定義和引數宣告的地方了 length a,b,len len...

你不知道的MySQL排序

想必大家都知道在mysql中,使用order by 對某一欄位進行asc 預設 正序 或desc 倒序 排序。但是很多的時候所要排序的字段是沒有規則的,那該要如何排序呢?select from t user order by age desc 先根據年齡排序,如果年齡相同的再按建立時間排序selec...

你所不知道的氣泡排序

說到排序,耳熟能詳,手寫 都可以很順溜的氣泡排序。但是追究氣泡排序的優化的時候,那麼估計就有很多人懵逼了。下面介紹幾種冒泡的幾個優化點吧。有這麼乙個數列 int number1 常規的寫法 這種冒泡寫法,一直要到每一輪的每一次對比完成後,迴圈才會結束,顯然這樣的寫法效率比較低,而且某些時候數列有一部...