点灯游戏:点一下鼠标,十字范围内的灯会明暗变换,最后都变亮或者熄灭。曾经公司有朋友在玩,我提议用编程解答该问题,第一个解答是穷举法,现在这个更快速一些,最后的答案竟然是有些初始值没有答案!
#include
<
iostream
>
using namespace std;
#define N 5
int puzz[ 32 ] = ... { 0, -1, -1, -1, -1, -1, -1, 2335592,
-1, -1, 7696412, -1, -1, 5690228, -1, -1,
-1, 3290808, -1, -1, -1, -1, 1152464, -1,
-1, -1,-1, 4671140, 6612428, -1, -1, -1,} ;
void int2Matrix( int value, int matrix[N][N])
... {
for (int i = 0; i < N; i++)
...{
for (int j = 0; j < N; j++)
...{
int shift = i * N + j;
matrix[i][j] = ((value >> shift) & 1);
}
}
}
int matrix2Int( int matrix[N][N])
using namespace std;
#define N 5
int puzz[ 32 ] = ... { 0, -1, -1, -1, -1, -1, -1, 2335592,
-1, -1, 7696412, -1, -1, 5690228, -1, -1,
-1, 3290808, -1, -1, -1, -1, 1152464, -1,
-1, -1,-1, 4671140, 6612428, -1, -1, -1,} ;
void int2Matrix( int value, int matrix[N][N])
... {
for (int i = 0; i < N; i++)
...{
for (int j = 0; j < N; j++)
...{
int shift = i * N + j;
matrix[i][j] = ((value >> shift) & 1);
}
}
}
int matrix2Int( int matrix[N][N])