poj 1270 Following Orders
// 给出一个字母表和一些字母对(c1,c2)表示c1<c2// 求出所有满足要求的排列,并按照字典序输出 #include<iostream> //拓扑排序 + dfs#include<algorithm>#include<string>using namespace std;int dict[30],edge[30][30],vis[30],rear,path[30],in[30];void topo_sort(int pos){if(pos==rear) {for(int i=0;i<rear;++i) cout<<char(path[i]+'a'); cout<<endl;return; }//经由主函数的sort(dict,dict+rear);再让下标从小到大深搜所有可能组合,就可以按照字典序输出全部解了 for(int i=0;i<rear;++i) {if(!vis[dict[i]]&&in[dict[i]]==0) //没有访问过且入度为0 { path[pos]=dict[i]; vis[dict[i]]=1;for(int j=0;j<rear;++j) {if(edge[dict[i]][dict[j]]==1) {in[dict[j]]--; } } topo_sort(pos+1); vis[dict[i]]=0;for(int j=0;j<rear;++j) {if(edge[dict[i]][dict[j]]==1) {in[dict[j]]++; } } } }}int main(){string str;while(getline(cin,str)) //输入字母表 { memset(edge,0,sizeof(edge)); memset(in,0,sizeof(in)); memset(vis,0,sizeof(vis)); rear=0;for(int i=0;i<str.size();++i)if(str[i]!=' ') dict[rear++]=str[i]-'a'; sort(dict,dict+rear); getline(cin,str); //输入偏序字母对 int cnt=0,pair[2];for(int i=0;i<str.size();++i) {if(str[i]!=' ') { pair[cnt++]=str[i]-'a';if(cnt==2) { edge[pair[0]][pair[1]]=1;in[pair[1]]++; //入度数加1 cnt=0; } } } topo_sort(0); cout<<endl; }return 0;}
转载于:https://www.cnblogs.com/mjc467621163/archive/2011/07/22/2114454.html
poj 1270 Following Orders相关推荐
- poj 1270(toposort)
http://poj.org/problem?id=1270 题意:给一个字符串,然后再给你一些规则,要你把所有的情况都按照字典序进行输出. 思路:很明显这肯定要用到拓扑排序,当然看到discuss里 ...
- 修改 html file 文字,修改input标签type=file类型的文字
Apworks框架实战 Apworks框架实战(一):Apworks到底是什么? Apworks框架实战(二):开始使用 Apworks框架实战(三):单元测试与持续集成 Apworks框架实战(四) ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- POJ 超详细分类
POJ 各题算法 1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 ...
- ACM题集以及各种总结大全(转)
ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...
- 【HDOJ图论题集】【转】
1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...
- 一系列图论问题[转]
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- 图论练习题(存起来练)
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Man ...
最新文章
- linux 为什么 c语言,为什么C程序里一定要写main函数
- Linux环境安装python3.6(APT方式)
- 前端开发js运算符单竖杠“|”的用法和作用及js数据处理
- Android 4.0屏蔽式多点触摸
- Android Activity启动模式总结
- 下载历史版本的 xCode
- 51 -算法 -LeetCode 53最大子序和 动态规划
- windos 为什么会突然服务停止了_女生为什么会突然说分手?
- table函数--Matplotlib
- Docker使用redis
- 最小二乘法(least squares)的曲线拟合(curve fitting)
- 数学常识--两点之间距离公式
- linux学习(跟着b站尚硅谷老师学习)
- 180亿美元估值,快手用什么来支撑?
- web前端 vue axios 网页设计
- 关于AndroBench在Android 10以后性能衰减的问题分析
- 《从点子到产品:产品经理的价值观与方法论》读后感
- VR全景展示是什么,VR全景展示的功能有哪些?
- PTA - 电话聊天狂人
- 【简历制作合集】面试时到底是用彩打简历还是黑白简历更出彩呢?|智测优聘出品
热门文章
- 【Python】http.client库的用法
- MongoDB入门(一)——数据库概述
- 201621123053《Java程序设计》第十四周学习笔记文章
- 单纯形法MATALAB实现
- 【版本更新】CAD组件Aspose.CAD 9月新版V17.9发布 | 支持IFC格式
- 【java】接口(interface)
- PHP5.3版本安装
- Arduino入门笔记(6):温度传感器及感温杯实验
- SystemCenter2012SP1实践(12)服务器、网络和存储配置
- Shuffling Machine (20)