独立钻石棋详解

来源:互联网 发布:欧洲瘟疫知乎 编辑:程序博客网 时间:2024/04/28 01:47

在独立钻石棋一文中,有关于独立钻石棋的代码。

我自己找出了一个最后只剩一个棋子,而且还在最中间的方案,然后把代码稍微修改,得到下面的代码,用来显示我发现的方案。

代码:

#include<iostream>using namespace std;int list[7][7];void display(){for (int i = 0; i < 7; i++){for (int j = 0; j < 7; j++){if (i == 2 || i == 3 || i == 4 || j == 2 || j == 3 || j == 4){if (list[i][j] == 2)cout << "●";else cout << "〇";}else cout << "  ";}cout << endl;}cout << endl << endl << endl;}void up(int i, int j){list[i - 1][j] ++;list[i][j] --;list[i + 1][j] --;display();}void down( int i, int j){list[i + 1][j] ++;list[i][j] --;list[i - 1][j] --;display();}void left(int i, int j){list[i][j - 1] ++;list[i][j] --;list[i][j + 1] --;display();}void right(int i, int j){list[i][j + 1] ++;list[i][j] --;list[i][j - 1] --;display();}int main(){for (int i = 0; i < 7; i++)for (int j = 0; j < 7; j++){list[i][j] = 0;if (i == 2 || i == 3 || i == 4 || j == 2 || j == 3 || j == 4)list[i][j] = 2;}list[3][3] = 1;display();down(2, 3);right(2, 2);up(3, 2);right(4, 1);down(2, 2);down(3, 0);left(4, 2);right(4, 1);left(2, 3);down(1, 4);right(0, 3);up(2, 4);down(1, 4);left(2, 4);left(2, 2);down(3, 1);right(4, 2);up(5, 2);up(4, 4);left(4, 5);down(3, 6);right(4, 4);left(4, 5);down(4, 4);up(5, 4);right(3, 3);up(5, 3);down(4, 4);right(4, 3);up(4, 4);left(3, 4);system("pause>nul");return 0;}

运行结果:

(由于排版的问题,我将输出的结果变成了图片)



在223(1)中,我还给出了另外一种解法。


1 0
原创粉丝点击