POJ1270【拓扑排序+DFS】
题意: 
先给你一个字符串,让你给他们排序; 
再给你一行,在这一行,每两个就是第一个需要在第二个前面; 
思路: 
//DFS写多了感觉好有啊,就是排序过程中可能会有多种情况。 
//我们考虑一下怎么排好一个位置,这个位置可能有多个东西可以占,那么这些东西对于这个位置都是等价的, 
//那么我们可以采用深搜下+回溯来解决。 
//其实还是蛮简单的
code:
#include<cstdio>
#include<string.h>
#include<iostream>
#include<algorithm>
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)
{
    if(u==num)
    {
        ans[u]='\0';
        printf("%s\n",ans);
        return;
    }
    for(int i=0;i<num;i++)
    {
        if(pre[i]==0)
        {
            ans[u]=ss[i];
            pre[i]--;
            for(int j=0;j<num;j++)
            {
                if(ma[i][j])
                {
                    pre[j]--;
                }
            }
            tuopu(u+1);
            //回溯;
            pre[i]++;
            for(int j=0;j<num;j++)
            {
                if(ma[i][j])
                {
                    pre[j]++;
                }
            }
        }
    }
}
int main()
{
    while(gets(s))
    {
        int L=strlen(s);
        num=0;
        for(int i=0;i<L;i++)
        {
            if(s[i]>='a'&&s[i]<='z')
            {
                ss[num++]=s[i];
            }
        }
        ss[num]='\0';
        sort(ss,ss+num);
        for(int i=0;i<num;i++)
        {
            gg[ss[i]]=i;
        }
        char 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;i<LL;i++)
        {
            if(s1[i]<'a'||s1[i]>'z')
                continue;
            if(!flag)
            {
                j1=s1[i];
                flag=1;
            }
            else
            {
                j2=s1[i];
                ma[gg[j1]][gg[j2]]=1;
                pre[gg[j2]]++;
                flag=0;
            }
        }
        tuopu(0);
        puts("");
    }
    return 0;
}
/*
a b f g
a b b f
v w x y z
v y x v z v w v
*/POJ1270【拓扑排序+DFS】的更多相关文章
- 拓扑排序+DFS(POJ1270)
		[日后练手](非解题) 拓扑排序+DFS(POJ1270) #include<stdio.h> #include<iostream> #include<cstdio> ... 
- ACM/ICPC 之 拓扑排序+DFS(POJ1128(ZOJ1083)-POJ1270)
		两道经典的同类型拓扑排序+DFS问题,第二题较第一题简单,其中的难点在于字典序输出+建立单向无环图,另外理解题意是最难的难点,没有之一... POJ1128(ZOJ1083)-Frame Stacki ... 
- 拓扑排序-DFS
		拓扑排序的DFS算法 输入:一个有向图 输出:顶点的拓扑序列 具体流程: (1) 调用DFS算法计算每一个顶点v的遍历完成时间f[v] (2) 当一个顶点完成遍历时,将该顶点放到一个链表的最前面 (3 ... 
- Ordering Tasks(拓扑排序+dfs)
		Ordering Tasks John has n tasks to do. Unfortunately, the tasks are not independent and the executio ... 
- HDU 5438 拓扑排序+DFS
		Ponds Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Sub ... 
- POJ1128 Frame Stacking(拓扑排序+dfs)题解
		Description Consider the following 5 picture frames placed on an 9 x 8 array. ........ ........ ... ... 
- poj1270Following Orders(拓扑排序+dfs回溯)
		题目链接: 啊哈哈.点我点我 题意是: 第一列给出全部的字母数,第二列给出一些先后顺序. 然后按字典序最小的方式输出全部的可能性.. . 思路: 整体来说是拓扑排序.可是又非常多细节要考虑.首先要按字 ... 
- Codeforces Round #292 (Div. 2) D. Drazil and Tiles [拓扑排序 dfs]
		传送门 D. Drazil and Tiles time limit per test 2 seconds memory limit per test 256 megabytes Drazil cre ... 
- 拓扑排序/DFS HDOJ 4324 Triangle LOVE
		题目传送门 题意:判三角恋(三元环).如果A喜欢B,那么B一定不喜欢A,任意两人一定有关系连接 分析:正解应该是拓扑排序判环,如果有环,一定是三元环,证明. DFS:从任意一点开始搜索,搜索过的点标记 ... 
- CodeForces-1217D (拓扑排序/dfs 判环)
		题意 https://vjudge.net/problem/CodeForces-1217D 请给一个有向图着色,使得没有一个环只有一个颜色,您需要最小化使用颜色的数量. 思路 因为是有向图,每个环两 ... 
随机推荐
- FineReport实现java报表报表展示的效果图
			Java报表-动态折叠树 Java报表-段落明细表 Java报表-多层统计 Java报表-多源分片与冻结 Java报表-发票套打表 Java报表-非统一页面打印 Java报表-复杂票据 Java报表- ... 
- Golang之bytes.buffer
			bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte Buffer 是 bytes 包中的一个 type Buffer struct{-} A buffer is a variab ... 
- PHP生成excel(3)
			这一节主要是设置背景颜色.边框.字体大小.表格宽度 效果图 代码如下 <?php header("Content-Type:text/html;charset=utf-8") ... 
- MeiTuanLocateCity
			https://github.com/eltld/MeiTuanLocateCity 
- Activity左边滑出,右边滑入的动画切换
			Activity左边滑出,右边滑入的动画切换 转载请注明出处:http://blog.csdn.net/u012301841/article/details/46920809 大家都知道Android ... 
- zoj1232Adventure of Super Mario(图上dp)
			题目连接: 啊哈哈.点我点我 思路: 这个题目是一个图上dp问题.先floyd预处理出图上全部点的最短路,可是在floyd的时候,把可以用神器的地方预处理出来,也就是转折点地方不能为城堡..预处理完成 ... 
- ubuntu编译airplay
			1.alsa/asoundlib.h: No such file or directory 缺少一个库: apt-get install libasound2-dev 2.fatal error: ... 
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo DP+矩阵快速幂加速
			E. Okabe and El Psy Kongroo Okabe likes to take walks but knows that spies from the Organization ... 
- mvn_action
			validate(验证): 验证项目正确,并且所有必要信息可用. compile(编译): 编译项目源码 test(测试): 使用合适的单元测试框架测试编译后的源码. package(打包): 源码编 ... 
- jQuery 工具函数
			jQuery工具函数 一.$.browser对象属性 属性列表 说明 webkit webkit相关浏览器则返回true,否则返回false,如google,傲游. mozilla mozilla相关 ... 
