真的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搜索+剪枝的更多相关文章

  1. 【P1274】魔术数字游戏(搜索+剪枝+模拟)

    做完了这个题的我一口老血喷在屏幕上... 这个题难度不高(~~胡扯~~),就是爆搜就可以了,然而..判断条件灰常多,剪枝也就非常多..然而,这些判断条件又不得不必须满足,所以也就十分容易错... 说一 ...

  2. [NOIP2011] mayan游戏(搜索+剪枝)

    题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...

  3. 3173. 【GDOI2103模拟3.17】扫雷游戏(搜索 + 剪枝)

    Problem 给出一个类似扫雷的游戏,有\(num\)个数字,求至少有多少个雷. Data constraint \(n,m\le 15,num\le 15\) Solution 好搜索啊. 现讲一 ...

  4. [BZOJ1853][Scoi2010]幸运数字 容斥+搜索剪枝

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 3202  Solved: 1198[Submit][Status ...

  5. Luogu 1312 【NOIP2011】玛雅游戏 (搜索)

    Luogu 1312 [NOIP2011]玛雅游戏 (搜索) Description Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空 ...

  6. 【2020-8-21】【数字游戏】【启发式搜索IDA*】

    有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置.下面是一个例子: ...

  7. 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II

    好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...

  8. NOIP2015 斗地主(搜索+剪枝)

    4325: NOIP2015 斗地主 Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 270  Solved: 192[Submit][Status] ...

  9. Loj10164 数字游戏1

    题目描述 科协里最近很流行数字游戏.某人命名了一种不降数,这种数字必须满足从左到右各位数字成小于等于的关系,如 123,446.现在大家决定玩一个游戏,指定一个整数闭区间 [a,b][a,b][a,b ...

随机推荐

  1. Jmeter(三十二)_搭建本地接口自动化环境

    我们在学习接口自动化的时候,最理想的状态是在公司有项目可以操作.大部分时候我们并没有可以练习的项目,因此练习接口无从谈起,只能找一些开放的api来练一练,但是这样并不能提高我们的技术.因此我们需要搭建 ...

  2. Telephone Phrases

    There are some common phrases and sentences you can use when speaking on the telephone. The informal ...

  3. mysql操作命令梳理(1)-索引

    1.创建索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引.以下命令语句分别展示了如何创建主键索引(PRIMARY KE ...

  4. M2贡献分分配方案

    1.初始分每个人都为0. 2.每周分配任务,按任务计分. 3.每周每个人有12.5分. 4.次周完成本周任务计6分. 5.未全部完成本周任务计6分. 6.12月29日统计分数,多出来的分数按完成任务数 ...

  5. [2019BUAA软件工程]第1次阅读作业

    [2019BUAA软件工程]第1次阅读作业 Tips Link 作业连接 [2019BUAA软件工程]第1次阅读作业 读<构建之法>的疑惑 个人开发流程(Personal Software ...

  6. 20135316Linux内核学习笔记第六周

    20135316王剑桥<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 一.进程控制块PCB--task_ ...

  7. SQL之SELECT语句执行顺序及子句功能

    1.select 语句的执行顺序 SELECT a.id,a.`product_name`,a.`agreement_copies` i,b.id as statusId from `opmp_pro ...

  8. MySQL存储和获取数据

    ---恢复内容开始--- 一.MySQL存储引擎? 1.引擎定义 存储引擎其实就是如何存取数据,如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系型数据苦中数据是以表格的形式,所 ...

  9. opencv学习笔记(二)

    摘要:学习资料主要参考于毛星云主编<opencv3编程入门> 1.图像显示 #include<opencv2/opencv.hpp> using namespace cv; / ...

  10. [转帖] ASP ASPX 等知识

    asp.asp.net..aspx..ascx..ashx的简单说明 https://www.cnblogs.com/jhcelue/p/6736147.html ASP是动态server页面(Act ...