拓扑排序->POJ2585
来源:互联网 发布:js中邮箱的正则表达式 编辑:程序博客网 时间:2024/06/07 13:01
POJ2585
题意:
有一个4*4的显示器,上面可以出现9种2*2的图片,这些图片可以相互覆盖,问输入的图片可否由那九种图片堆叠出来
题解
初始化基本信息,拓扑排序判断有无环出现
代码:
#include <stdio.h>#include <iostream>#include <string.h>#include <string>#include <queue>using namespace std ;int MAP[5][5] ;//储存输入图片信息int edge[10][10] ;//邻接矩阵int in[10] ;//储存入度string windows[5][5] ;//每个节点可以包含的字符int visit[10] ;//某种字符是否出现int t ;//共有几种字符出现void init(){ int i , j , k ; for(i = 0 ; i <5 ; i ++) for(j = 0 ; j < 5 ; j ++) windows[i][j].erase(); for(k = 1 ; k <= 9 ; k ++) { i = (k - 1)/3; j = (k - 1)%3; windows[i][j] +=char(k) ; windows[i][j+1] +=char(k) ; windows[i+1][j] +=char(k) ; windows[i+1][j+1] +=char(k) ; }}void build(){ int i , j , k ; for (i = 0; i < 4; ++i) { for(j = 0; j < 4 ; j ++) { for(k = 0; k <windows[i][j].length();k++) { if(!edge[MAP[i][j]][windows[i][j][k]] && (MAP[i][j]!=windows[i][j][k])) { edge[MAP[i][j]][windows[i][j][k]] = 1; in[windows[i][j][k]] ++ ; } } } }}int topo(){ int i , j , k ; for (i = 0; i < t; ++i) { k = 1; while(!visit[k] || (k<=9&&in[k]>0)) k++; if(k>9) return 0 ; visit[k] = 0; for(j = 1 ; j < 10 ; j ++) { if(visit[j] && edge[k][j]) in[j] -- ; } } return 1 ;}int main(){ char words[20] ; init() ; while(cin >> words) { if(words[3] == 'O') break ; memset(in , 0 , sizeof(in)) ; memset(visit , 0 , sizeof(visit)) ; memset(edge , 0 , sizeof(edge)) ; t = 0 ; for(int i = 0 ; i <= 3 ; i ++) for (int j = 0; j <= 3; j ++) { scanf("%d" , &MAP[i][j]) ; if (!visit[MAP[i][j]]) { t ++ ; visit[MAP[i][j]] = 1 ; } } build() ; if(topo()) puts("THESE WINDOWS ARE CLEAN"); else puts("THESE WINDOWS ARE BROKEN"); cin>>words; } return 0;}
0 0
- 拓扑排序->POJ2585
- POJ2585 Window Pains [拓扑排序]
- POJ2585 Window Pains(拓扑排序)
- poj2585 zoj2193 Window Pains 拓扑排序
- poj2585 Window Pains(拓扑排序判定)
- poj2585 Window Pains (裸拓扑排序)
- POJ2585~Window Pains(拓扑排序)
- 【拓扑排序】(一)(poj2585)window pains
- poj2585
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- MP4 seek状态 sample读取流程
- 【一步一步学习VBA】WORD 中创建表格并插入文本
- Matlab 使用squeeze函数提取多维矩阵的某一维
- android异步任务 访问网络 加载图片 解决方案大集合
- 元组VS列表
- 拓扑排序->POJ2585
- # 记录每日点滴
- Windows下还原Oracle数据库常用命令
- [php学习十八]JQuery练习3-综合
- Extjs:内嵌高德地图
- 欢迎使用CSDN-markdown编辑器
- c#消息提示框messagebox的简单使用
- 连接网络命名空间的方法
- python TCP编程再试牛刀