这道题输出特别坑。。。。

题目的意思也不太好理解。。

就解释一下输出吧。。
它让你 从下往上输出。
如果有多种情况,按照字典序从小往大输出。。。
就是这个多种情况是怎么产生的呢。
下面给一组样例。

很明显 A在最底下且A在Z下,Y和这个连通块 没有相交。
答案是:
AYZ
AZY
YAZ

所以题目的意思是让你输出可能的方案。 并不管它是在第几层上。

前几次WA的原因:没有考虑多种情况
后几次WA的原因:把这个块分层以后按照层排好序以后next_permutation
现在看看真是被我自己蠢哭了、、、

最后附一个无解数据吧(把所有结果输出就会超时)
(但是测试数据里没有这样的数据):
15
18
AAABBBCCCDDDEEEFFF
A.AB.BC.CD.DE.EF.F
AAABBBCCCDDDEEEFFF
GGGHHHIIIJJJKKKLLL
G.GH.HI.IJ.JK.KL.L
GGGHHHIIIJJJKKKLLL
MMMNNNOOOPPPQQQRRR
M.MN.NO.OP.PQ.QR.R
MMMNNNOOOPPPQQQRRR
SSSTTTUUUVVVWWWXXX
S.ST.TU.UV.VW.WX.X
SSSTTTUUUVVVWWWXXX
YYYZZZ…………
Y.YZ.Z…………
YYYZZZ…………

// by SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
#define mem(ARRAY,NUM) memset(ARRAY,NUM,sizeof(ARRAY))
using namespace std;
int n,m,tot,N;
char a[30][30],s[30],lm[30],lx[30],rm[30],rx[30],in[30],v[999];
int first[30],next[999];
bool vis[30],map[30][30],VIS[30];
void add(char x,char y){v[tot]=y;next[tot]=first[x];first[x]=tot++;}
void dfs(int t){if(t==N+1){for(char i=1;i<=N;i++)printf("%c",s[i]+'A');putchar('\n');}for(char i=0;i<26;i++)if(!in[i]&&vis[i]&&!VIS[i]){VIS[i]=1,s[t]=i;for(char j=first[i];~j;j=next[j])in[v[j]]--;dfs(t+1);for(char j=first[i];~j;j=next[j])in[v[j]]++;VIS[i]=0;}
}
int main(){while(~scanf("%d%d",&n,&m)){mem(lm,0x3f);mem(rm,0x3f);mem(first,-1);tot=N=0;mem(lx,0);mem(rx,0),mem(map,0);mem(vis,0);mem(in,0);for(char i=1;i<=n;i++)for(char j=0;j<=m;j++){scanf("%c",&a[i][j]);if(a[i][j]!='.'&&a[i][j]!='\n'){a[i][j]-='A';if(!vis[a[i][j]])vis[a[i][j]]=1,N++;lm[a[i][j]]=min(lm[a[i][j]],j);rm[a[i][j]]=min(rm[a[i][j]],i);lx[a[i][j]]=max(lx[a[i][j]],j);rx[a[i][j]]=max(rx[a[i][j]],i);}}for(char i=0;i<26;i++)if(vis[i]){for(char j=lm[i];j<=lx[i];j++){if(a[rm[i]][j]!=i&&!map[a[rm[i]][j]][i])map[a[rm[i]][j]][i]=1;if(a[rx[i]][j]!=i&&!map[a[rx[i]][j]][i])map[a[rx[i]][j]][i]=1;}for(char j=rm[i];j<=rx[i];j++){if(a[j][lm[i]]!=i&&!map[a[j][lm[i]]][i])map[a[j][lm[i]]][i]=1;if(a[j][lx[i]]!=i&&!map[a[j][lx[i]]][i])map[a[j][lx[i]]][i]=1;}}for(char i=0;i<26;i++)for(char j=0;j<26;j++)if(map[i][j])add(j,i),in[i]++;dfs(1);}
}

成功WA了一屏,,,,,,

转载于:https://www.cnblogs.com/SiriusRen/p/6532380.html

POJ 1128 Frame Stacking 拓扑排序+暴搜相关推荐

  1. [POJ] 3687 Labeling Balls(拓扑排序)

    题目地址:http://poj.org/problem?id=3687 反向建边,即重的球指向轻的球,注意重边,然后拓扑排序.从n-->1循环,即每次从入度为0的球里面选编号大的存(包含输入的逻 ...

  2. LeetCode+ 16 - 20 双指针、排序|暴搜、递归|双指针、排序|链表|栈、字符串

    最接近的三数之和 算法标签:数组.双指针.排序 LeetCode+ 11 - 15 给你一个长度为 n 的整数数组 nums 和 一个目标值 target.请你从 nums 中选出三个整数,使它们的和 ...

  3. 拓扑排序题集【夏天的风】

    [HDU] 1285 确定比赛名次 2094 产生冠军 2647 Reward 3342 Legal or Not 1811 Rank of Tetris  拓扑+并查集 3231  Box Rela ...

  4. 图论之拓扑排序 poj 2367 Genealogical tree

    题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstrin ...

  5. 拓扑排序 POJ - 3687反向图跑字典序(重边)

    题目链接:http://poj.org/problem?id=3687 题目大意: 给定N个球,这些球的编号分别是1-N中的某个数字,它们的重量也分别是1-N中的某个数字,任意两个球的编号和重量不相等 ...

  6. poj 3687(拓扑排序)

    http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...

  7. poj 4084:拓扑排序

    poj 4084:拓扑排序 非常好的题目,恶心的算法 描写叙述 给出一个图的结构,输出其拓扑排序序列,要求在同等条件下.编号小的顶点在前. 输入 若干行整数,第一行有2个数,分别为顶点数v和弧数a,接 ...

  8. 搜索与图论1—深搜、宽搜、拓扑排序

    本人的LeetCode账号:魔术师的徒弟,欢迎关注获取每日一题题解,快来一起刷题呀~ 本人Gitee账号:路由器,欢迎关注获取博客内容源码. 文章目录 一.深度优先搜索 1 排列数字 2 N皇后 二. ...

  9. Poj 1094 拓扑排序Kahn

    Poj 1094 拓扑排序Kahn Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4133 ...

最新文章

  1. 团队竞争力有多强,你的企业就能走多远
  2. 长沙经济复苏战打的如何?我们从高桥红星两个市场里找到了答案
  3. 小程序实现图片的放大预览
  4. 阿里云yum源安装SVN失败的问题
  5. BOOST_LOG_UNIQUE_IDENTIFIER_NAME宏用法的测试程序
  6. VC++6.0怎么打开工程
  7. 【搜索引擎】全文索引数据结构和算法
  8. HDU3788 ZOJ问题
  9. 基于rocketMq实现分布式事务解决方案
  10. Stack应用 - 数学表达式(Balanced parentheses)括号完全匹配
  11. 可能是阿里最古老的流程引擎:PMC的架构与设计分享
  12. SSD目标检测算法生成8732个先验框
  13. APP上架需要准备的材料清单(上架规范和流程)
  14. 计算机管理格式化硬盘,电脑格式化磁盘的方法步骤图
  15. Quartus II 无法正常编译bug解决
  16. 电池SOC仿真系列-基于双卡尔曼滤波(KF+UKF)算法的电池SOC估算
  17. [渝粤教育] 苏州农业职业技术学院 日语会话基础 参考 资料
  18. hive大数据量实现分页查询,java结合mybatis及多数据源(hive、MySQL)
  19. IP地址转换函数 inet_pton、inet_ntop与 inet_aton、inet_addr、 inet_ntoa
  20. 32位程序运行内存1G以上容易卡死或崩溃问题

热门文章

  1. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]
  2. Shell学习笔记一
  3. Linux系统中CPU忙闲的衡量——load和idle
  4. Docker 如何支持多种日志方案?- 每天5分钟玩转 Docker 容器技术(88)
  5. JavaScript中解决Microsoft.XMLHTTP乱码的最简单方法
  6. 【性能】雅虎军规(14条常用)笔记
  7. windows 服务 定时程序 跑不出数据
  8. “网页上有错误”的解决方法
  9. 使用MDT2012部署WindowsLinux操作系统(4)
  10. mysql+join+合计_图解MySQL里的各种 JOIN,看完不懂来找我!