皇后问题(类似八皇后问题)
在8*8的国际象棋棋盘上,放置最少数目的皇后,使得这些皇后不能互相攻击,并能控制整个棋盘。打印输出每一种放置方法和方法总数。空格用‘-’表示,皇后用‘*’表示样例:Que...
在8*8的国际象棋棋盘上,放置最少数目的皇后,使得这些皇后不能互相攻击,并能控制整个棋盘。 打印输出每一种放置方法和方法总数。空格用‘-’表示,皇后用‘*’表示样例:Queen=5Total=728NO。1:
展开
2013-05-08
展开全部
解题思路和八皇后一样哦, 我给你一个我自己的思路吧。 一个合适的解应是在每列、每行上只有一个皇后,且一条斜线上也只有一个皇后。
求解过程从空配置开始。在第1列至第m列为合理配置的基础上,再配置第m+1列,直至第n列配置也是合理时,就找到了一个解。接着改变第n列配置,希望获得下一个解。另外,在任一列上,可能有n种配置。开始时配置在第1行,以后改变时,顺次选择第2行、第3行、…、直到第n行。当第n行配置也找不到一个合理的配置时,就要回溯,去改变前一列的配置。
引入一个一维数组(col[ ]),值col[i]表示在棋盘第i列、col[i]行有一个皇后。例如:col[3]=4,就表示在棋盘的第3列、第4行上有一个皇后。另外,为了使程序在找完了全部解后回溯到最初位置,设定col[0]的初值为0当回溯到第0列时,说明程序已求得全部解,结束程序运行。 为使程序在检查皇后配置的合理性方面简易方便可以引入三个数组。。呵呵 ,这个你自己想吧。 还有问题加我哦
求解过程从空配置开始。在第1列至第m列为合理配置的基础上,再配置第m+1列,直至第n列配置也是合理时,就找到了一个解。接着改变第n列配置,希望获得下一个解。另外,在任一列上,可能有n种配置。开始时配置在第1行,以后改变时,顺次选择第2行、第3行、…、直到第n行。当第n行配置也找不到一个合理的配置时,就要回溯,去改变前一列的配置。
引入一个一维数组(col[ ]),值col[i]表示在棋盘第i列、col[i]行有一个皇后。例如:col[3]=4,就表示在棋盘的第3列、第4行上有一个皇后。另外,为了使程序在找完了全部解后回溯到最初位置,设定col[0]的初值为0当回溯到第0列时,说明程序已求得全部解,结束程序运行。 为使程序在检查皇后配置的合理性方面简易方便可以引入三个数组。。呵呵 ,这个你自己想吧。 还有问题加我哦
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询