2015年的时候,我就随便点了几下,得到
2016年6月,我在一定的规则和推理之下,进行了枚举,发现答案应该差不多只有下面这12种情况。
今天,我又编程来枚举所有的答案
代码:
#include<iostream> using namespace std; int position = 51; //position=10*i+j表示的是第i行第j列的位置 int direction[8] = { -10, 10, -1, 1, -11, -9, 11, 9 }; //8个方向,数字代表的是每次移动的时候position的增量
int number[7][7] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 6, 5, 9, 0, 0, 4, 5, 4, 3, 5, 0, 0, 1, 3, 5, 3, 2, 0, 0, 2, 1, 5, 3, 4, 0, 0, 3, 5, 4, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0 }; int i1, i2, i3, i4, i5, i6; int i[7]; bool ok() { int sum = 0; position = 51; i[1] = i1, i[2] = i2, i[3] = i3, i[4] = i4, i[5] = i5, i[6] = i6; while (sum < 25) { int x = position / 10, y = position % 10; if (number[x][y] == 0)return false; if (number[x][y] == 9)return true; position += direction[i[number[x][y]]]; // sum++; } return false; } void out() { position = 51; cout << endl; while (true) { int x = position / 10, y = position % 10; cout << position << " "; if (number[x][y] == 9)return; position += direction[i[number[x][y]]]; } } void move() { for (i1 = 0; i1 < 8;i1++) for (i2 = 0; i2 < 8;i2++) for (i3 = 0; i3 < 8;i3++) for (i4 = 0; i4 < 8; i4++) { if (i1 == i2 || i1 == i3 || i1 == i4 || i2 == i3 || i2 == i4 || i3 == i4)continue; for (i5 = 0; i5 < 8; i5++) { if (i1 == i5 || i2 == i5 || i3 == i5 || i4 == i5)continue; for (i6 = 0; i6 < 8; i6++) { if (i1 == i6 || i2 == i6 || i3 == i6 || i4 == i6 || i5 == i6)continue; if (ok())out(); } } } } int main() { move(); cout << "end"; system("pause>nul"); return 0; }
输出的有重复的,利用word的查找和替换功能可以轻松找出所有的不同的行,如下
51 42 32 23 24 15
51 42 32 23 34 25 24 15
51 42 43 32 23 13 24 15
51 42 43 33 23 34 25 15
51 42 53 43 44 35 24 15
51 42 32 23 33 44 35 24 15
51 42 52 53 43 44 35 24 15
51 41 32 22 23 34 24 14 15
51 42 32 23 34 25 35 24 15
51 41 52 53 44 34 24 14 15
51 42 53 54 44 35 25 24 15
51 42 53 54 43 33 23 24 15
51 52 42 33 23 34 35 24 25 15
51 41 52 53 42 33 34 24 14 15
51 52 42 33 23 12 13 24 25 15
51 41 32 22 23 33 34 24 14 15
51 42 32 23 22 33 44 35 24 15
51 52 42 33 23 22 12 13 24 25 15
51 52 42 41 32 33 23 12 13 24 25 15
一共有19种
我验证了一下,这19组全部是正确的。