题目链接

题意 : 将n*n个正方形进行排列,需要判断相邻的正方形的相邻三角形上边的数字是不是都相等。

思路 : 只知道是个深搜,一开始不知道怎么搜,后来看了题解才明白,就是说不是自己去搜,而是将给定的正方形按照要求一个个往上摆,如果摆不下去了肯定是没有结果的。还有可以将一样的放一起,如果一个在某个位置放不下了,那么其他的更放不下了。

#include <stdio.h>
#include <iostream>
#include <string.h> using namespace std; struct node
{
int up,right,down,left;
bool operator == (const node &a)
{
return up == a.up && right == a.right && down == a.down && left == a.left;
}
} p[]; int mapp[][];
int sum[];
bool flag;
int n ; void dfs(int s)
{
if(s == n*n)
{
flag = true ;
return ;
}
int x = s/n,y = s%n;
for(int i = ; i < n*n && !flag ; i++)
{
if(sum[i])//如果该正方形已经没有了,就用下一个
{
if(x > && p[i].up != p[mapp[x-][y]].down) continue;//如果这个正方形和前一个正方形在同一列,那这个的up应该与前一个down相同
if(y > && p[i].left != p[mapp[x][y-]].right) continue;
mapp[x][y] = i ;//表明这个位置可以放
--sum[i] ;
dfs(s+) ;
++sum[i] ;//还原
}
}
} int main()
{
int cas = ;
while(scanf("%d",&n) && n)
{
memset(sum,,sizeof(sum));
for(int i = ; i < n*n ; ++i)
{
scanf("%d %d %d %d",&p[i].up,&p[i].left,&p[i].down,&p[i].right);
flag = false ;
for(int j = ; j < i ; ++j)
if(sum[j] && p[j] == p[i])//优化,防止重复
{
++sum[j];
flag = true;
break;
}
if(!flag)
++sum[i];
}
memset(mapp,,sizeof(mapp));
flag = false;
dfs();
if(cas > )
printf("\n");
printf("Game %d: ",cas++);
if(flag)
printf("Possible\n");
else
printf("Impossible\n");
}
return ;
}

ZOJ 1008 Gnome Tetravex(DFS)的更多相关文章

  1. ZOJ 1008 Gnome Tetravex(DFS)

    Gnome Tetravex Time Limit: 10 Seconds      Memory Limit: 32768 KB Hart is engaged in playing an inte ...

  2. [ZOJ 1008]Gnome Tetravex (dfs搜索 + 小优化)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1008 题目大意:给你n*n的矩阵,每个格子里有4个三角形,分别是 ...

  3. ZOJ 1002 Fire Net(dfs)

    嗯... 题目链接:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827364501 这道题是想出来则是一道很简单的dfs: 将一 ...

  4. ZOJ Problem Set - 1002(DFS)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1002 题意:给出一个n,有n*n大小的城市,(.)表示空地,从碉堡(O)射 ...

  5. zoj 1008 Gnome Tetravex

    开放式存储阵列为每平方米有几个,否则,超时-- #include <stdio.h> #include <string.h> #include <iostream> ...

  6. ZOJ 2477 Magic Cube(魔方)

    ZOJ 2477 Magic Cube(魔方) Time Limit: 2 Seconds      Memory Limit: 65536 KB This is a very popular gam ...

  7. LeetCode Subsets II (DFS)

    题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...

  8. LeetCode Subsets (DFS)

    题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...

  9. HDU 2553 N皇后问题(dfs)

    N皇后问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 在 ...

随机推荐

  1. Android系统中提供的原子操作

    代码的实现位于文件system/core/include/cutils中 http://androidxref.com/4.4.3_r1.1/xref/system/core/include/cuti ...

  2. c# 远程回收IIS应用池

    利用下列代码可实现IIS应用池的远程回收 var serverManager = ServerManager.OpenRemote(ip); var appPools = serverManager. ...

  3. OC4_单例

    // // MusicManager.h // OC4_单例 // // Created by zhangxueming on 15/6/19. // Copyright (c) 2015年 zhan ...

  4. 【墙裂推荐】大学生如何学习WEB开发

    每天网络上有上万条Web招聘职位,招聘要求很简单: 会JavaScript,会CSS,能开发网页,能设计网页. 但我们真正面试时才发现:都是些很小很小的知识点! 我们没有实践过,没有碰到过,头脑一片茫 ...

  5. 【原】GO 语言常见错误

    1. Scan error on column index 4: converting string "" to a int: strconv.ParseInt: parsing ...

  6. how to Enable Client Integration

    i got a problem,the problem is list cant use export to excel button in sharepoint 2010. I found my a ...

  7. 隐藏win7盘符

    1.隐藏盘符: //新建注册表,隐藏X盘符 int regeditme() { HKEY hkey; DWORD dwLastError= ;//隐藏X盘2^25 J:2^9=512 X:盘符与挂载的 ...

  8. C#源码大汇总

    C#高仿QQ2013可在广域网部署聊天系统GG叽叽 动态显示硬盘分区容量饼图 自定义ProgressBar控件高仿Win8进度条 多皮肤精美在线QQ悬浮客服插件 jQuery仿天猫首页多格焦点图片轮播 ...

  9. php curl抓取远程页面内容的代码

    使用php curl抓取远程页面内容的例子. 代码如下: <?php /** * php curl抓取远程网页内容 * edit by www.jbxue.com */ $curlPost = ...

  10. php代码加密|PHP源码加密——实现方法

    Encipher - PHP代码加密 | PHP源码加密下载地址:https://github.com/uniqid/encipher 该加密程序是用PHP代码写的,加密后代码无需任何附加扩展,无需安 ...