【发布时间】:2019-05-09 09:34:44
【问题描述】:
注意:- 我已经通过回溯方法解决了上述问题,通过尝试所有不同的方式,我正在寻找一种非常有效的方式/模式。
我们得到一个大小为 'N' X 'N' 的棋盘。但它可以包含任意数量的白色方块和黑色方块,也可以任意顺序。
假设有'a'-白色方块和'b'-黑色方块,那么,
[a+b=n*n]
我们必须继续在棋盘上用黑色方块走棋,直到没有棋子为止。
这是在移动中发生的:-
1)我们在坐标:-(row,column) 处选择一个黑色方块并将其移动到 (row-1,column+1) ,仅当坐标为 (row-1,column+1) ) 还包含一个黑色方块。移动到新位置后,旧位置,即 [row,column] 变为空,即颜色变为白色。
或
2) 我们在 co-ordinate:-(row,column) 处选择一个黑色方块并将其移动到 (row-1,column-1) ,仅当坐标为 (row-1,column-1 ) 还包含一个黑色方块。移动到新位置后,旧位置,即 [row,column] 变为空,即它的颜色变为白色。
我们必须以最少的步数结束这个游戏,问题是找出这些步的顺序。
让我们用'1'表示黑色方块,用'0'表示白色方块......
例子:-
3X3 棋盘:-
0 1 0
1 0 1
0 0 0
以最少步数结束游戏的步数:-
1)将[1,0]处的黑色方块移动到[0,1]...现在棋盘看起来像这样:-
0 1 0
0 0 1
0 0 0
2) 我们将 [1,2] 处的黑色方块移动到 [0,1] 处,棋盘看起来像这样:-
0 1 0
0 0 0
0 0 0
现在,没有有效的移动,游戏结束:-)
给定一个大小为“N”x“N”的棋盘以及任何黑白格子的配置,如何找到以最少步数结束游戏的步数?
【问题讨论】:
-
您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQ 和How to Ask。
-
我不要代码,我只想知道解决方案背后的想法:-)
标签: chessboard.js