五连珠问题,C语言编程实现

图,在 6×7 的长方形棋盘的每个小方格的中心点各放一个棋子。如果两个棋子所在
的小方格共边或共顶点,那么称这两个棋子相连。现从这 42 个棋子中取出一些,使得棋盘
上剩下的棋子,没有五个在一条直线(横、竖、斜方向)上依次相连。请用数学的方法解决
最少取出多少个棋子才能满足要求?并说明理由。同时给出一种去掉棋子的方式。
提示:如果证明至少需要取出
k
个棋子。可采用的一种思路是:理论上证明取
k 1
个棋子
不能满足要求,而你确实找到一种取出
k
个棋子就可以满足要求的取法。另一种思路是采用
一种方法证明至少需要取
k
个棋子才能满足要求,而你确实找到一种取出
k
个棋子就可以满
足要求的取法。当然或许你还有别的思路。在这个具体问题中,请你只用数学的方法解决该
问题。
问题 2:二维一般问题
对问题 1 中使用数学证明的方法,只能解决规模很小的问题。而且针对不同的规模,所
使用的数学技巧会不同。这样就不具有一般性。如果现在需要你从一般性的问题考虑,你将
如何解决这个问题呢?一个很自然的想法是利用数学建模的方法建立一般模型,然后设计算
法或利用软件求解。基于此,请针对任意规模
m n 
的棋盘,要求满足的条件与问题 1 相同。
问至少去掉多少个棋子,可以使没有五个在一条直线(横、竖、斜方向)上依次相连。并对
13×17 的长方形棋盘,给出具体的求解结果,并将最后结果给出直观的棋盘表格显示。

C语言编程实现这一问题,求大神解答图片说明

查看全部
qq_34405898
qq_34405898
2016/04/29 14:45
  • c++
  • c
  • 程序大神
  • 五连珠问题
  • 数据结构
  • 点赞
  • 收藏
  • 回答
    私信

3个回复