P1274 魔术数字游戏 naive搜索+剪枝
真的naive......
我把所有能剪的枝都剪了才过的。否则就是TTT
还有个很神奇的事:数组作为参数传进递归函数时会造成上一层函数里的数组的改变。这个我TM调了一天。
下面奉上代码
#include <cstdio>
#include <cstring>
using namespace std; int a[][];
int xx,yy; void dfs(bool b[],int x,int y)
{
if(y>) x++,y=;
/* printf("%d %d\n",x,y);
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++) printf("%d ",a[i][j]);
printf("\n");
}
for(int i=0;i<=3;i++)
{
for(int j=1;j<=4;j++) printf("%d ",b[i*4+j]);
printf("\n");
}
printf("\n");
*/
if(x==&&y==)
{
a[][]=-a[][]-a[][]-a[][];
if(a[][]>||a[][]<) {return;} if(b[a[][]]) {return;} b[a[][]]=; for(int i=;i<=;i++)
{
a[][i]=-a[][i]-a[][i]-a[][i];
if(a[][i]>||a[][i]<)
{
for(int j=;j<i;j++) b[a[][j]]=;
b[a[][]]=;
return;
}
if(b[a[][i]])
{
for(int j=;j<i;j++) b[a[][j]]=;
b[a[][]]=;
return;
}
b[a[][i]]=;
}
///b[a[4][1]]=0;b[a[4][2]]=0;b[a[4][3]]=0;b[a[4][4]]=0;b[a[3][4]]=0;
if(a[xx][yy]!=) {b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;return;}
if(a[][]+a[][]+a[][]+a[][]!=) {b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;return;}
if(a[][]+a[][]+a[][]+a[][]!=) {b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;return;}
if(a[][]+a[][]+a[][]+a[][]!=) {b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;return;}
if(a[][]+a[][]+a[][]+a[][]!=) {b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;return;}
if(a[][]+a[][]+a[][]+a[][]!=) {b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;return;}
for(int i=;i<=;i++) if(b[i]!=) {b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;return;}
for(int i=;i<=;i++)
{
for(int j=;j<=;j++) printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;b[a[][]]=;
return;
}
if(y==)
{
a[x][y]=-a[x][]-a[x][]-a[x][];
if(x==xx&&y==yy&&a[x][y]!=) return;
//printf("%d=34-%d-%d-%d\n",a[x][4],a[x][1],a[x][2],a[x][3]);
if(a[x][y]>||a[x][y]<) {a[x][y]=;return;}
if(b[a[x][y]]) {a[x][y]=;return;}
if(x==) if(a[][]+a[][]+a[][]+a[][]!=) {a[x][y]=;return;}
b[a[x][y]]=;
dfs(b,x,y+);
b[a[x][y]]=;
a[x][y]=;
return;
}
if(x==&&y==)
{
a[x][y]=-a[][]-a[][]-a[][];
if(x==xx&&y==yy&&a[x][y]!=) return;
if(a[x][y]>||a[x][y]<) {a[x][y]=;return;}
if(b[a[x][y]]) {a[x][y]=;return;}
b[a[x][y]]=;
dfs(b,x,y+);
b[a[x][y]]=;
a[x][y]=;
return;
}
if(x==xx&&y==yy)
{
a[x][y]=;
if(b[]) return;
b[]=;
dfs(b,x,y+);
a[x][y]=;
b[]=;
return;
}
for(int i=;i<=;i++)
{
if(b[i]) continue;
a[x][y]=i;
b[i]=; dfs(b,x,y+);
a[x][y]=;
b[i]=;
}
return;
} int main()
{
scanf("%d%d",&xx,&yy);
bool b[]; memset(b,,sizeof(b));
dfs(b,,);
return ;
}
—.—
最近开始重温寒假精英班的课程,从打好搜索开始重新打基~~础~~!
P1274 魔术数字游戏 naive搜索+剪枝的更多相关文章
- 【P1274】魔术数字游戏(搜索+剪枝+模拟)
做完了这个题的我一口老血喷在屏幕上... 这个题难度不高(~~胡扯~~),就是爆搜就可以了,然而..判断条件灰常多,剪枝也就非常多..然而,这些判断条件又不得不必须满足,所以也就十分容易错... 说一 ...
- [NOIP2011] mayan游戏(搜索+剪枝)
题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...
- 3173. 【GDOI2103模拟3.17】扫雷游戏(搜索 + 剪枝)
Problem 给出一个类似扫雷的游戏,有\(num\)个数字,求至少有多少个雷. Data constraint \(n,m\le 15,num\le 15\) Solution 好搜索啊. 现讲一 ...
- [BZOJ1853][Scoi2010]幸运数字 容斥+搜索剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 3202 Solved: 1198[Submit][Status ...
- Luogu 1312 【NOIP2011】玛雅游戏 (搜索)
Luogu 1312 [NOIP2011]玛雅游戏 (搜索) Description Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空 ...
- 【2020-8-21】【数字游戏】【启发式搜索IDA*】
有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置.下面是一个例子: ...
- 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II
好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...
- NOIP2015 斗地主(搜索+剪枝)
4325: NOIP2015 斗地主 Time Limit: 30 Sec Memory Limit: 1024 MBSubmit: 270 Solved: 192[Submit][Status] ...
- Loj10164 数字游戏1
题目描述 科协里最近很流行数字游戏.某人命名了一种不降数,这种数字必须满足从左到右各位数字成小于等于的关系,如 123,446.现在大家决定玩一个游戏,指定一个整数闭区间 [a,b][a,b][a,b ...
随机推荐
- Wechat login authorization(OAuth2.0)
一.前言 昨天小组开了个会,让我今天实现一个微信网页授权的功能,可以让用户在授权之后无需再次登录既可进入用户授权界面.在这之前我也从没接触过微信公众号开发之类的,也不知道公众号后台是啥样子的,自己所在 ...
- LVS负载均衡下session共享的实现方式-持久化连接
之前简单介绍LVS负载均衡的高可用方案实施,下面详细说明LVS的session解决方案: LVS算法中,SH算法可以实现将同一客户端的请求总是发送给第一次指定的RS,除非该RS出现故障不能再提供服务. ...
- dxteam团队项目终审报告
一. 团队成员的简介和个人博客地址 M1阶段 http://www.cnblogs.com/dxteam/p/3991514.html M2阶段 新成员 邓亚梅 http://www.cnblogs. ...
- LINUX实践之模块
模块实践 --关于模块代码部分 ---首先是.c代码: 一定会用到的函数有这几个:module_init().module_exit().MODULE_LICENSE() 会用到的头文件:module ...
- 网络:Xen理解
Xen是由剑桥大学计算机实验室开发的一个开源项目.是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个客户操作系统(Guest OS). 一.Xen虚拟化类型 ...
- JavaScript的类、对象、原型、继承、引用
以CSS为例,有一种为所有class为"xxxx"的元素添加样式(外联样式),那么所有class为xxx的元素样式就会改变,在css中像下面这么写: <html> &l ...
- PHP使用cookie时遇到的坑
先看这么一段代码 第一次运行该程序的结果如下图: 然后我刷新了一次,运行结果如下图 你如果不细心,一定没发现,第二次运行的last time的值,正是第一次运行时保存的值. 先看代码,如果$_COOK ...
- 77 Linux commands and utilities you'll actually use
https://searchdatacenter.techtarget.com/tutorial/77-Linux-commands-and-utilities-youll-actually-use
- Linux 更改root与home分区大小的方法总结
1. 安装了CentOS7.5的虚拟机 但是发现里面的操作系统 home 分区占到了400g 根分区只有50g 认为不太好,所以要改一下. 2.方法. 好像是xfs的文件格式, 没法使用resize2 ...
- Node json
//1:加载相关模块 http express mysqlconst http = require("http");const mysql = require("mysq ...