博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 1083 Frame Stacking
阅读量:4557 次
发布时间:2019-06-08

本文共 964 字,大约阅读时间需要 3 分钟。

其实就是一个拓补排序。(动态记录第i个之上的j存不存在,反过来就是第j个之下的i)

首先确立每个框的位置(题目明确说了每一边都不会被完全覆盖)。/*可以通过搜索,搜索到该框的所有四个角*/||如果题目要求在严格一点,这个题目难度几何增加,在一定范围内是可算顺序的。

检查边框的位置如果不是原来的字母,则说明原来的字母被现在的字母覆盖,得到一个局部大小关系(计算第j个下i的数量,0的话就确定下来这个j的位置了),接下来的就是拓补排序了。

值得一提的是如果有多种可能的话,要按字典顺序逐个输出。(隐含的就是在循环遍历,默认条件就是字典顺序)

#include
#include
int topo[26][26];char map[31][31];int xmax[26],xmin[26],ymax[26],ymin[26];/*每个字母框的四个角,即x的两个极值和y的两个极值*/char result[28];/*字母框掩盖的结果*/int h,w;int exist[26];/*创建一个可能的所有字母框,如果出现就记录它是否出现*/int used[26];/*已经确定的字母框*/int sum; void solve(int step)/*所有出现的框 解决第几个框*/{ int s[26]; int i,j; if(step==sum)/*如果解决的框到超出正常一个证明前面所有sum个框都确定了顺序*/ { for(i=0;i
xmax[map[i][j]-'A']) xmax[map[i][j]-'A'] = j; if(j
ymax[map[i][j]-'A']) ymax[map[i][j]-'A'] = i; if(i

 

转载于:https://www.cnblogs.com/woshijishu3/p/3631382.html

你可能感兴趣的文章
ISE和modelsim的配合
查看>>
通过用户模型,对数据库进行增删改查操作。
查看>>
群发邮件功能的完善
查看>>
gradle多项目构建及依赖
查看>>
linux, windows 文件传输的问题
查看>>
php:对象(object)数据类型实例详解
查看>>
关于java环境变量配置Javac命令无效问题
查看>>
常用的正则表达式
查看>>
Spring Boot使用@Async实现异步调用
查看>>
LeetCode 79. 单词搜索(Word Search)
查看>>
MySQL 多列索引优化小记
查看>>
J2SE核心开发实战(一)——认识J2SE
查看>>
gdbserver 远程调试问题:设置文件和so搜索路径
查看>>
SDK Build Tools revision (19.0.3) is too low for project Minimum required is 19.1.0
查看>>
推荐一个免费在线制作Banner的好地方
查看>>
javascript——select 标签的使用
查看>>
Python学习日志_2017/09/08
查看>>
《Python学习之路 -- Python基础之迭代器及for循环工作原理》
查看>>
struts2注解方式的验证
查看>>
CS 和 BS 的区别和优缺点
查看>>