棋盘放马问题,要求用c++
论文问答
1
在m行n列的棋盘上,放尽可能多的马,以使相互间不能被吃掉。编程给出最大可放置的马的数量及其放置方法。老师要求用计算机知道怎么放马,为什么这样放是最多的。
-
二维数组,放满即可 。马走日, 象走田,车走直路炮翻山,士走斜线护将边,小卒一去不回还。 车走直路马踏斜,象飞田字炮打隔,卒子过河了不得。这是常见的象棋走法口诀。 m行n列的棋盘,可考虑使用二维数组去存储 ,放尽可能多的马,以使相互间不能被吃掉。 根据这两句口诀:马走日以及车走直路马踏斜。而且马踏斜时,有绊蹄子的说法 ,所以考虑到这些。基本上就可以尝试实现了。
-
在国际象棋中,马每走一步,是从黑格跳到白格或从白格跳到黑格,为了马相互之间不能被吃掉,所有马必须放在同色的格子上。这题就转变为把m行n列的棋盘划分为黑白相间的格子,然后统计哪种颜色的格子多,就把马多放在那种颜色的格子。
发表回复