问题提出:
有三个白子和三个黑子如下图布置:
○ ○ ○ . ● ● ●
用最少的步数将上图中白子和黑子的位置进行交换:
● ● ● . ○ ○ ○
游戏规则:
(1) 一次只能移动一个棋子;
(2) 棋子可以向空格中移动,也可以跳过一个对方的棋子进入空格,但不能向后跳,也不能跳过两个子。
解题思路:
参考代码:
#include <iostream>
#include <list>
using namespace std;
#define WHITEPIECE 1
#define BLACKPIECE 2
#define NULLVALUE 0
#define MAPLEN 7
typedef struct stStatus
{
int m_data[MAPLEN];
}Status;
list<Status> g_listatus;//存储整个步骤
void GameStep(Status& st, int NullPos);
bool GameOver(Status& st);
int main()
{
Status ss = {1,1,1,0,2,2,2};
GameStep(ss,3);
return 0;
}
void GameS

本文探讨了一个有趣的数学问题——如何在最少步骤内完成黑白棋子的交换。题目给出了初始布局,并制定了移动棋子的规则。解题过程中涉及了逻辑思维和策略分析,同时提供了c++实现的参考代码。
最低0.47元/天 解锁文章
1771

被折叠的 条评论
为什么被折叠?



