mayan 游戏 search
#include <cstdio>
#include <cstring>
#include <algorithm>
//#define debug
//#define debug2 const int maxn = ;
int n;
int m[maxn][maxn][maxn];
int f[maxn][maxn];
int ans[][]; bool cl(int x) {
memset(f, , sizeof(f));
for (int i = ; i <= ; i++)
for (int j = ; j <= ; j++) {
if (m[x][i][j] == ) break;
if (f[i][j] != && i > && m[x][i-][j] == m[x][i][j] && m[x][i-][j] == m[x][i][j]) {
f[i-][j] = ;
f[i-][j] = ;
f[i][j] = ;
int cur = i + ;
while (cur <= && m[x][cur][j] == m[x][i][j]) {
f[cur][j] = ;
cur++;
}
cur = i - ;
while (cur > && m[x][cur][j] == m[x][i][j]) {
f[cur][j] = ;
cur--;
}
}
if (f[i][j] != && j > && m[x][i][j-] == m[x][i][j] && m[x][i][j-] == m[x][i][j]) {
f[i][j-] = ;
f[i][j-] = ;
f[i][j] = ;
int cur = j + ;
while (cur <= && m[x][i][cur] == m[x][i][j]) {
f[i][cur] = ;
cur++;
}
cur = j - ;
while (cur > && m[x][i][cur] == m[x][i][j]) {
f[i][cur] = ;
cur--;
}
}
}
bool is_c = ;
for (int i = ; i <= ; i++)
for (int j = ; j <= ; j++) {
if (f[i][j] > ) {
is_c = ;
m[x][i][j] = ;
}
}
return (is_c);
} void fall(int x) {
for (int i = ; i <= ; i++) {
int cur = ;
for (int j = ; j <= ; j++) {
if (m[x][i][j] > ) {
cur++;
m[x][i][cur] = m[x][i][j];
if (j != cur) m[x][i][j] = ;
}
}
}
} void dfs(int x) {
#ifdef debug
for (int i = ; i <= n; i++) {
printf("%d %d %d\n", ans[i][], ans[i][], ans[i][]);
}
printf("\n\n");
#endif
#ifdef debug2
if (ans[][] == && ans[][] == && ans[][] == ) {
printf("kkk\n");
}
#endif
if (x == n + ) {
fall(x);
cl(x);
fall(x);
while (cl(x)) fall(x);
for (int i = ; i <= ; i++)
for (int j = ; j <= ; j++) {
if (m[x][i][j] > ) return;
}
for (int i = ; i <= n; i++) {
printf("%d %d %d\n", ans[i][], ans[i][], ans[i][]);
}
exit();
}
for (int i = ; i <= ; i++)
for (int j = ; j <= ; j++) {
if (m[x][i][j] == ) continue;
if (i < && m[x][i+][j] == ) {
memcpy(m[x+], m[x], sizeof(m[x]));
m[x+][i+][j] = m[x][i][j];
m[x+][i][j] = ;
fall(x + );
while (cl(x + )) fall(x + );
ans[x][] = i - ;
ans[x][] = j - ;
ans[x][] = ;
dfs(x + );
}
if (i < && m[x][i+][j] > && m[x][i+][j] != m[x][i][j]) {
memcpy(m[x+], m[x], sizeof(m[x]));
m[x+][i+][j] = m[x][i][j];
m[x+][i][j] = m[x][i+][j];
fall(x + );
while (cl(x + )) fall(x + );
ans[x][] = i - ;
ans[x][] = j - ;
ans[x][] = ;
dfs(x + );
}
if (i > && m[x][i-][j] == ) {
memcpy(m[x+], m[x], sizeof(m[x]));
m[x+][i-][j] = m[x][i][j];
m[x+][i][j] = ;
fall(x + );
while (cl(x + )) fall(x + );
ans[x][] = i - ;
ans[x][] = j - ;
ans[x][] = -;
dfs(x + );
}
}
} int main () {
scanf("%d", &n);
for (int i = ; i <= ; i++) {
for (int j = ; j <= ; j++) {
scanf("%d", &m[][i][j]);
if (m[][i][j] == ) break;
}
}
dfs();
printf("-1\n");
return ;
} /*
1
1 0
2 1 0
2 1 4 0
3 4 0
2 3 3 4 0
*/
mayan 游戏 search的更多相关文章
- $Mayan$游戏
\(Mayan\)游戏 好啊,一年(半年)来的梦魇,终于结束了. 其实我从来没料到整体竟然会如此暴力--做的时候机房里冷得很,感觉晕晕乎乎地做完了,晕晕乎乎地调了好久,晕晕乎乎地听(看了题解的)\(q ...
- NOIP2011 Mayan游戏
3 Mayan游戏 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上 ...
- noip提高组2011 Mayan游戏
Mayan游戏 描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.**游戏通关 ...
- [题目] Luogu P1312 Mayan游戏
题面 题目描述 $ Mayan puzzle $是最近流行起来的一个游戏.游戏界面是一个 \(7行 \times 5列\)的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放 ...
- 洛谷P1312 Mayan游戏
P1312 Mayan游戏 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他 ...
- [Luogu 1312] noip11 Mayan游戏
[Luogu 1312] noip11 Mayan游戏 Problem: Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即 ...
- luoguP1312 Mayan游戏 题解(NOIP2011)
luoguP1312 Mayan游戏 题目 #include<bits/stdc++.h> #define ll long long #define rg register #define ...
- Luogu P1312 Mayan游戏(搜索)
P1312 Mayan游戏 题意 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个\(7\)行\(\times 5\)列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必 ...
- 洛谷P1312 [NOIP2011提高组Day1T3]Mayan游戏
Mayan游戏 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游 ...
随机推荐
- layui select change
<select lay-filter="test"></select> layui.use([ 'form'], function() { var form ...
- [luogu] P4364 [九省联考2018]IIIDX(贪心)
P4364 [九省联考2018]IIIDX 题目背景 Osu 听过没?那是Konano 最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐游戏.现在,他在世界知名游戏公司KONMAI ...
- ASP.NET-服务器客户端的信息保持
ASP.NET客户端和服务器端的信息保持方案 来自为知笔记(Wiz)
- HDU 2865
和上题一样,但K较大,不能直接用矩阵来写.这个矩阵必定是这个形式的. 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 分成对角线上元素B与非对角线上元素A k: 1 2 3 4 ... ...
- [Angular] Send Data via HTTP using Angular HttpParams
Obviously in a real world application we do not only fetch data from the backend, but we also send d ...
- 应用Spring和Hibernate(C3P0数据池)写数据库交互项目
一.xml的配置文件(application.xml) <?xml version="1.0" encoding="UTF-8"?> <bea ...
- java ee5的新特性
1.标注 一种元数据,作用分为三类:编写文档@Document.代码分析@Deparecated(过时的)和编译检查@override(重写) 2.EJB3 EJB2的升级版,商业化的java bea ...
- No connection could be made because the target machine actively refused it [::1]:808
No connection could be made because the target machine actively refused it [::1]:808 1.首先查看端口占用情况, 在 ...
- C#--DataGridView添加DateTimePicker时间控件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- if switch
一.基本if结构: 1.语法:if (条件){ 代码块 } 2.执行顺序:先判断条件,条件成立则行{}内的代码,不成立则跳出if结构快既不执行{}内的代码. 3.什么情况下要用基本if选择结构:当需要 ...