点击此处返回总目录 接下来我们先看第一种递归的用法,就是用递归来替代多重循环。
n后问题
【问题】 问题描述 输入整数n,要求n个皇后,摆在n*n的棋盘上,互相不能攻击,输出全部方案。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
输入: 一个正整数N
输出: N皇后问题的全部摆法。输出结果里每一行代表一种摆法。行里的第i个数字如果是n,就代表第i个皇后需要摆放在第i行第n列。 皇后的行列编号都是从1开始。
样例输入: 4
样例输出: 2 4 1 3 3 1 4 2
【分析】 如果是8皇后问题,我们可以用8重循环来解决。但是对于n皇后问题,n是不固定的,没法写重数不固定的循环。 我们这里用递归来替代多重循环。
【代码】
【结果】 【总结】 当然还有其他的方法,比如构造法等。我找到了一篇综述性质的文章,这样说的: 有兴趣的可以看一下:https://blog.csdn.net/lyy289065406/article/details/78955101
|