bdpq游戏截图
bdpq游戏截图
bdpq游戏截图
bdpq游戏截图
bdpq游戏截图
bdpq

bdpq

官方入驻
9.3
预约
2386
12 万

游戏介绍

上次更新于2016/10/30
开发者的话这个游戏是睡神我进入烧脑系列游戏开发后的第一款作品,看似简单却很难,看似很难却又意外简单,目前已知五种解法,你能找到另外的解法么?官方QQ群611217770
玩过
写了个程序把游戏秒了……
感谢各位玩家之前的评价,我是比较膜拜各位自己总结出规律的,由于我比较菜,只能写写代码了。
下面是程序代码,比较暴力……
如大家所说,上下与左右是不相关的,故此程序只解其中一种状态
代码仍有许多可优化之处,还请大家谅解
---------我是分割线----------
#include<iostream>
#include<cmath>
#define N 25 //对应5阶
using namespace std;
bool q[33554432];//数组规模为2^25,修改此处与N的定义值可解出更高阶
unsigned short num(int m,int n) {
unsigned short p = m % 2;
while (n > 0) {
m /= 2;
p = m % 2;
n--;
}
return p;
}
int pow2(int n) {
int output = 1;
while (n > 0) {
output *= 2;
n--;
}
return output;
}
int flap(int m, int n) {
int a = (int)sqrt(N);
int r = n / a;
int c = n - a*r;
m += pow2(n)*(1 - 2 * num(m, n));
for (int i = 0; i < a; i++)m += pow2(r*a + i)*(1 - 2 * num(m, r*a + i));
for (int i = 0; i < a; i++)m += pow2(c + i*a)*(1 - 2 * num(m, c + i*a));
return m;
}
void outputmap(int m) {
int a = (int)sqrt(N);
cout << "--------" << endl;
for (int i = 0; i < N; i++) {
cout << m % 2;
m /= 2;
if (i%a == a - 1)cout << endl;
}
}
void dfs(int m, int c) {
if (q[m])return;
else q[m] = true;
if (m == 0 || m == pow2(N) - 1) {
outputmap(c); return;
}
for (int i = 0; i < N; i++) {
if (num(c, i) == 0)dfs(flap(m, i), c + pow2(i));
}
}
int main() {
int map = 0;
for (int i = 0; i < N; i++) {
char p;
cin >> p;
map += (p - '0')*pow2(i);
}
dfs(map, 0);
return 0;
}
输入格式:
对于n阶,输入n行,每行n个字符
字符为数字0或1,对应翻转的两种状态
输出格式:
n行,每行n个字符;
字符0代表不翻动此位置的卡片;
字符1代表翻动此位置的卡片。
(当然,大家可根据0与1的多寡决定何者为所需翻动的卡片)
输入范例:
01000
11111
01000
01000
01000
输出范例:
00000
01000
00000
00000
评价:
UI简洁好看。
玩法可玩性高,理论上,n阶可以有
(2^(n^2)-2)*2^(n^2)
种关卡(未排除对称、旋转重回关卡)
bdpq这些放一起实在是太像了,玩着有点眼花2333
如果出个diy卡片颜色(或皮肤)什么的可能会舒服些2333
由于我懒+菜,就当作锻炼写代码啦_(:3」∠)_
2017/6/16
来自 小米5S