一共有好多件事情
事情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 常規的寫法 這種冒泡寫法,一直要到每一輪的每一次對比完成後,迴圈才會結束,顯然這樣的寫法效率比較低,而且某些時候數列有一部...