uva 124 Following Orders 拓扑排序输出全部序列
2014-11-16 22:03
381 查看
一道裸的拓扑排序,回溯输出全部序列即可。还有就是我自己太懒,最后多出了一空行结果wa了一次,还查了半天。。。。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #define N 310 using namespace std; int g ; int ru ; int vis ; int len; char s ,str ; vector <int> vec; void dfs(int now) { if(vec.size()>len-1) { for(int i=0;i<vec.size();i++){ printf("%c",vec[i]+'a'-1); } printf("\n"); return ; } int i; for(i=0;i<len;i++){ if(g[now][str[i]-'a'+1]==1 && ru[str[i]-'a'+1]!=0 ){ ru[str[i]-'a'+1]--; } } for(int j=0;j<len;j++){ if(ru[str[j]-'a'+1]==0 && vis[str[j]-'a'+1]==0){ vec.push_back(str[j]-'a'+1); vis[str[j]-'a'+1]=1; dfs(str[j]-'a'+1); vis[str[j]-'a'+1]=0; vec.pop_back(); //ru[str[j]-'a'+1]++; } } for(i=0;i<len;i++){ if(g[now][str[i]-'a'+1]==1){ ru[str[i]-'a'+1]++; } }//之前这一块没写好,即恢复路径没有做好 } int main() { int con=0; while(gets(s)){ vec.clear(); int cnt=0; for(int i=0;i<strlen(s);i++){ str[cnt]=s[i]; i++; cnt++; } sort(str,str+cnt); gets(s); memset(g,0,sizeof(g)); memset(ru,0,sizeof(ru)); memset(vis,0,sizeof(vis)); for(int i=0;i<strlen(s)-2;i+=4){ if(g[s[i]-'a'+1][s[i+2]-'a'+1]==0){ g[s[i]-'a'+1][s[i+2]-'a'+1]=1; ru[s[i+2]-'a'+1]++; } } if(con==0){ con++; } else{ printf("\n"); } len=cnt; for(int i=0;i<len;i++){ if(ru[str[i]-'a'+1]==0){ vec.push_back(str[i]-'a'+1); vis[str[i]-'a'+1]=1; dfs(str[i]-'a'+1); vis[str[i]-'a'+1]=0; vec.pop_back(); } } } return 0; }
相关文章推荐
- UVa 872 Ordering(拓扑排序输出全部路径)
- <实例>输出给定字符串的全部连续子序列
- poj 1270&& uva 124 Following Orders(拓扑排序、DFS)
- UVa 872 - Ordering 输出全拓扑排序
- UVA 124 & POJ 1270 Following Orders(拓扑排序)
- 拓扑排序输出全部路径
- Magical GCD UVA 1642 利用约数个数少来优化 给定n个数,求使连续的一段序列的所有数的最大公约数*数的数量的值最大。输出这个最大值。
- poj 1270 || uva 124 Following Orders (拓扑排序)
- ***uva 348 最优数组乘法序列(记忆化搜索+输出路径)
- uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
- java实现输入一个正整数n,输出全部连续正整数相加后等于n的所有序列。
- 使用STL输出组合序列 + UVa 441 Lotto
- 组合问题:输出从m个数中的任意抽取n个数的组合全部可能序列
- UVa 872 - Ordering 输出全拓扑排序
- poj 3687 Labeling Balls【拓扑排序 输出元素在拓扑序列中的位置】
- 回溯法输出字符串入栈出栈的全部可能序列
- poj 3687 Labeling Balls 【拓扑排序 输出元素在拓扑序列中的位置】
- 拓扑排序--uva1572 Self-Assembly
- uva 1423 - Guess(拓扑排序)
- UVa 10305 Ordering Tasks(拓扑排序)