uva11134
2016-06-11 11:33
155 查看
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34086
/* solution: 行的摆放与列的拜访是无关的,所以可以将两个分开。这样就成了两个简单的一维数组问题。 当初做这到题目时候想过用n皇后的方法来做。但貌似有陷阱,暂时想不起来是什么陷阱了。 等想起来后在补充吧。 note: 问题分解 date: 2016-5-20 */ #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn = 5000 + 5; int n, visRow[maxn], visCol[maxn]; int xl[maxn], yl[maxn], xr[maxn], yr[maxn]; void setBoard(int i) { for(int x = xl[i]; x <= xr[i]; x++) { //cout << x << endl; if(!visRow[x]) { for(int y = yl[i]; y <= yr[i]; y++) { //cout << y << endl; if(!visCol[y]) { visCol[y] = 1; visRow[x] = 1; printf("%d %d\n", x, y); return; } } } } } int main() { freopen("input.txt", "r", stdin); while(~scanf("%d", &n) && n) { memset(visCol, 0, sizeof(visCol)); memset(visRow, 0, sizeof(visRow)); for(int i = 0; i < n; i++) scanf("%d%d%d%d", &xl[i], &yl[i], &xr[i], &yr[i]); for(int i = 0; i < n; i++) printf("%d %d %d %d\n", xl[i], yl[i], xr[i], yr[i]); for(int i = 0; i < n; i++) { //按照矩阵顺序放置棋子,记录下已经被占领过的行和列 setBoard(i); } printf("\n"); } return 0; }
相关文章推荐
- POJ2486Apple tree题解
- mysql索引的类型和优缺点
- 学习笔记之Android
- 《Hadoop进阶》利用Hadoop构建豆瓣图书推荐系统
- linux来创建分区
- POJ 2186 Popular Cows
- python的GUI编程--wxpython学习(三)两个布局
- spark集群搭建
- nginx设置开机启动
- Mybatis <where>标签
- Linux USB驱动程序设计
- C#编程之JSON序列化与反序列化
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(11)----摄像机
- CSS学习2(值和单位)
- POJ 1159 Palindrome
- MQTT基础——Part 1. 认识MQTT
- Linux 用户组权限+高级计划任务
- 将CString转换为float或int的最简单的方法
- 安装部署OFBIZ
- 【ZZ】编程能力层次模型