POJ 1094解題報告

2021-08-25 13:44:24 字數 960 閱讀 3033

poj 1094解題報告

這個題主要的是使用拓撲排序,相關演算法隨便找一本演算法的書都能看到,也不難,就不羅嗦了。

我使用鄰接表來儲存圖,並使用dm,dn分別儲存每個節點(即字母)的出度和入度。

我只想強調一下需要注意的:

一、先判斷是否有環路

我就是一開始在檢測到不能確定序列的時候就直接返回了,而沒有判斷是否有環路,結果一直wa;

二、當序列可以確定或是檢測到環路的時候,忽略後邊的輸入。

code:

#include

#include

using

namespacestd;

charg[26][26];

intdm[26];//每一列的和,即每個字母的入度

intdn[26];//每一行的和,即每個字母的出度

intm,n;

charresult[27];

inttoposort()

}if(0==count)//發現環路

returncount;

if(count>1)sorted=false;

for(inti=0;i

dmt[index]=-1;

result[r++]=index+'a';

}result[r]=0;

if(sorted)

return1;//序**定

else

return2;//序列不確定

}intmain()

if(j==dn[str[0]-'a'])

intres=toposort();

if(1==res)//序列已確定

else

if(0==res)//發現衝突}}

if(found)

else

if(incons)

else

cin>>n>>m;

}return0;

}

POJ 1094 變數排序 解題報告

題目描述 把不同的變數進行公升序排序用小於操作符命令實現的。例如由a b,b c 和 c d 可以得到公升序序列a,b,c,d 在本題中,你將得到若干條小於操作符命令,形如 a b 的格式,請你確定利用這些命令,能否得到乙個唯一的公升序序列。輸入格式 第1行為整數n,m,n 2 n 26 表示參與排...

POJ 1094 拓撲排序

文章大意是將n個字母排序 n 26 最終必須排成鍊錶式的輸出 一旦確定或者出現環,記錄當前步數,後續輸入無視 加個拓撲排序判斷圖的總結 1 如果輸入的有向圖中的點,不存在入度為0的點,則存在迴路,反過來則不成立 2 如果入隊的點的個數小於輸入的點的個數,則肯定存在迴路 3 如果存在的入度為零的點大於...

拓撲排序 poj1094

此題題目有點小問題,那也是很多人ac不了的原因 問題是,當給定的前k項條件能夠確定出大小順序時,即便k項之後出現了矛盾條件,輸出也應該是sorted sequence determined after k relations 後面再輸出排序好的序列!include include using nam...