uva 124 Following Orders 拓扑排序输出全部序列
来源:互联网 发布:jdk 8 linux x64.gz 编辑:程序博客网 时间:2024/06/05 10:30
一道裸的拓扑排序,回溯输出全部序列即可。还有就是我自己太懒,最后多出了一空行结果wa了一次,还查了半天。。。。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#define N 310using namespace std;int g[N][N];int ru[N];int vis[N];int len;char s[N],str[N];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;}
0 0
- uva 124 Following Orders 拓扑排序输出全部序列
- poj 1270 || uva 124 Following Orders (拓扑排序)
- poj 1270&& uva 124 Following Orders(拓扑排序、DFS)
- UVA 124 & POJ 1270 Following Orders(拓扑排序)
- Following Orders(拓扑排序)
- POJ 1270 Following Orders(拓扑排序:输出所有可能)
- POJ 1270 Following Orders(拓扑排序:输出所有可能)
- poj1270 Following Orders (拓扑排序+回溯输出路径)
- POJ 1270 Following Orders 拓扑排序全输出
- 【uva-124】Following Orders (拓扑排序)竟然自己写出了全排列的算法!
- UVa 124 - Following Orders
- UVa 124 Following Orders
- pku 1270 Following Orders(拓扑排序)
- pku 1270 Following Orders DFS+拓扑排序
- POJ 1270 Following Orders (拓扑排序)
- POJ 1270 Following Orders 拓扑排序
- POJ 1270 Following Orders 拓扑排序
- poj 1270 Following Orders(拓扑排序+dfs)
- 刚接触微信平台应用的念头
- <数据结构> 实验四 字符串和多维数组
- 第3章《栈和队列》 思维导图
- 写出下面程序的结果
- ubuntu搭建samba服务器
- uva 124 Following Orders 拓扑排序输出全部序列
- js中的事件流
- 容器学习
- OllyDbg破解系列学习笔记(十二)
- 第十二周项目3-用递归方法求解-求两个数的最大公约数
- MongoDB 数据库安装
- 1.1 起步 一个简单的win32程序
- UVA10056 - What is the Probability ?(概率)
- java中 classpath的定义