真的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. 谈谈css伪类与伪元素

    前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus.:hover以及<a>标签的:link.:visited等,伪元素较常见的比如:before.:after等. ...

  2. C#_获取路径

    一.获取当前文件的路径 1.  System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName  获取模块的完整路径,包括文件名. ...

  3. 基于bootstrap表单登录(带验证码)

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <!-- ...

  4. Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)-C. Plasticine zebra

    问了学长,感觉还是很迷啊,不过懂了个大概,这个翻转操作,实质不就是在序列后面加上前面部分比如 bw | wwbwwbw  操作过后 wbwbwwbww 而 bw | wwbwwbwbw 这样我们就知道 ...

  5. 删除运行时权限不足,cmd开启管理员

    管理员帐号活跃代码:net user administrator /active:yes 搜索cmd-右键以管理员身份运行 切换administrator帐号登录 操作后最后关闭这么高的权限,避免被非 ...

  6. 生命游戏&一维细胞自动机 笔记

    de 生命游戏是一种简单的聚合模型,展示了事物是如何聚合的,是自动机(CA)模型的一种.由剑桥大学约翰康威发明,其规则为: 1. 每个细胞拥有八个邻居,细胞状态只有存活(黑)和死亡(白)两种: 2.处 ...

  7. net license tool, EasyLicense !

    net license tool, EasyLicense ! 开源 .net license tool, EasyLicense !   介绍: 过去我常常像是否有一个帮助授权的软件,它可以非常简单 ...

  8. number (2)变量相关错误

    变量没有被定义 fw cannot be resolved 变量没有被初始化 正确代码 package com.itheima_01; import java.io.FileWriter;import ...

  9. React 表单受控组件

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  10. pycharm5.0 快捷键大全osx

    官网链接https://resources.jetbrains.com/assets/products/pycharm/PyCharm_ReferenceCard_mac.pdf 一直想给别人安利py ...