POJ1270 拓撲排序 DFS

2021-07-12 06:35:03 字數 1131 閱讀 4967

題意:

先給你乙個字串,讓你給他們排序;

再給你一行,在這一行,每兩個就是第乙個需要在第二個前面;

思路:

//dfs寫多了感覺好有啊,就是排序過程中可能會有多種情況。

//我們考慮一下怎麼排好乙個位置,這個位置可能有多個東西可以佔,那麼這些東西對於這個位置都是等價的,

//那麼我們可以採用深搜下+回溯來解決。

//其實還是蠻簡單的

code:

#include

#include

#include

#include

using

namespace

std;

char ans[30];

char ss[30];

char s[100];

int ma[30][30];

int pre[30];

int gg[200];

int num;

void tuopu(int u)

for(int i=0;iif(pre[i]==0)

}tuopu(u+1);

//回溯;

pre[i]++;

for(int j=0;jif(ma[i][j])}}

}}int main()

}ss[num]='\0';

sort(ss,ss+num);

for(int i=0;ichar s1[110];

gets(s1);

int ll=strlen(s1);

int j1,j2,flag;

flag=0;

memset(pre,0,sizeof(pre));

memset(ma,0,sizeof(ma));

for(int i=0;iif(s1[i]<'a'||s1[i]>'z')

continue;

if(!flag)

else

}tuopu(0);

puts("");

}return0;}

/*a b f g

a b b f

v w x y z

v y x v z v w v

*/

POJ1270 拓撲排序 DFS

題意 先給你乙個字串,讓你給他們排序 再給你一行,在這一行,每兩個就是第乙個需要在第二個前面 思路 dfs寫多了感覺好有啊,就是排序過程中可能會有多種情況。我們考慮一下怎麼排好乙個位置,這個位置可能有多個東西可以佔,那麼這些東西對於這個位置都是等價的,那麼我們可以採用深搜下 回溯來解決。其實還是蠻簡...

POJ 1270 拓撲排序(刪邊法)

直接看到這道題就感覺好做,於是愉快的wa了十發,簡單說下坑點 1.按字典序輸出,需要開頭對陣列進行排序。2.中間可能不只有乙個空格,輸入需要特別處理。坑我一晚上,心裡都快崩潰了,簡直神坑,醉了。include include include include include includeusing ...

POJ1128 拓撲排序 DFS

看到題應該很容易想到利用拓撲排序來判斷相框之間的關係,對於每乙個相框,我們遍歷一遍可以找到他的 上下左右 四條邊的位置,再搜尋這幾條邊上是否有其他字母,有的話就新增乙個類似於a然後就是我個人認為的這道題的難點,怎麼按照字典序輸出所有可能答案,最開始我想的是利用bfs跑拓撲,確定每個點的層級,再對相同...