题目:

ZOJ 1008

分析:

重排矩阵, 虽然题目给的时间很多, 但是要注意剪枝, 把相同的矩阵标记, 在搜索时可以起到剪枝效果。

Code:

#include <bits/stdc++.h>

using namespace std;

struct Node {
int left, right, top, buttom;
bool operator == (const Node &a) const {
return left == a.left && right == a.right && top == a.top && buttom == a.buttom;
}
}; Node E[35];
int Sum[35], Map[11][11], Num; void GetE(int n) {
memset(Sum, 0, sizeof(Sum));
for(int i = 0; i < n*n; ++i) {
cin >> E[i].top >> E[i].right >> E[i].buttom >> E[i].left;
for(int j = 0; j <= i; ++j) {
if(E[j] == E[i]) {
Sum[j]++;
break;
}
}
}
} bool DFS(int pos, int n) {
if(pos == n*n) return true;
int x = pos/n, y = pos%n;
//cout << x << " " << y << endl;
for(int i = 0; i < n*n; ++i) {
if(Sum[i]) {
if(x > 0 && E[i].top != E[Map[x-1][y]].buttom) continue;
if(y > 0 && E[i].left != E[Map[x][y-1]].right) continue;
Map[x][y] = i;
--Sum[i];
if(DFS(pos+1, n) == true) return true;
else {
++Sum[i];
}
}
}
return false;
} int main() {
int Case = 0;
while(cin >> Num && Num) {
if(Case > 0) printf("\n");
GetE(Num);
//cout << "1" <<endl;
if(DFS(0, Num)) printf("Game %d: Possible\n", ++Case);
else printf("Game %d: Impossible\n", ++Case);
}
return 0;
}

ZOJ1008的更多相关文章

  1. ZOJ1008 Gnome Tetravex

    DFS+剪枝~ #include<bits/stdc++.h> using namespace std; ][]; int N; int cnt; ]; ]; unordered_map& ...

  2. OJ题目分类

    POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 P ...

  3. Gnome Tetravex

    zoj1008:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1008 题目意思是有一个游戏,即给出一个图,该图是由n*n个 ...

随机推荐

  1. SpringMVC model 多余字段 忽略

    spring-mybaits的model中如何通过注解忽略非数据库字段?——CSDN问答频道https://ask.csdn.net/questions/643534 ObjectMapper忽略多余 ...

  2. PHP7.0-PHP7.3新特性与变更

    到目前为止,PHP7发布已经升级到7.3,本文来总结一下每个版本的变更与新特性 PHP7.0 1. 组合比较符 (<=>) 组合比较符号用于比较两个表达式.当$a小于.等于或大于$b时它分 ...

  3. 使用pycharm进行远程开发部署调试设置 与 远程部署调试是否必须使用远程主机的解释器?

    远程开发部署调试目的: 配置pycharm远程部署调试主要用于本地代码与远程服务器上的代码进行同步,使得本地代码经过修改后,可以很容易的同步到远程服务器上.同时设置pycharm的解释器为远程服务器的 ...

  4. asp.net core开源项目

    Orchard框架:https://www.xcode.me/code/asp-net-core-cms-orchard https://orchardproject.net/ https://git ...

  5. Android Connection refused

    遇到 Connection refused的错误. AndroidManifest.xml  文件中添加: //网络权限 <uses-permission android:name=" ...

  6. Matlab 中S-函数的使用 sfuntmpl

    function [sys,x0,str,ts,simStateCompliance] = sfuntmpl(t,x,u,flag) %SFUNTMPL General MATLAB S-Functi ...

  7. Inheritance: 'A' is an inaccessible base of 'B'

    'boost::enable_shared_from_this<net::Session>' is an inaccessible base of 'net::Session' BOOST ...

  8. VMware 安装虚拟机系统

    Ø  简介 本文主要介绍使用 VMware 安装虚拟机系统. 1.   创建虚拟机 1)   打开VMware,创建新虚拟机 2)   选择需要安装系统的iso镜像文件 3)   选择需要安装的Win ...

  9. 虚拟云主机创建多个站点方法(.htaccess实现)

    阿里的普通版虚拟云主机最多只能建一个站点,但可以绑定多个域名.如果我们想创建2个或3个主机怎么办呢?难道需要再另外购买一台主机? 其实我们可以通过.htaccess文件来定义相关域名绑定对应的网站目录 ...

  10. #2 numpy pandas初步学习记录

    对numpy中的array进行了了解,array方法的取值arr_2d[0:2, 0:2] pandas 1,read_CSV方法 2,head方法 3,loc方法,取值前开后开, 4,replace ...