题目:
在n * n的国际象棋盘上放置n个皇后,使它们彼
此互相不攻杀。皇后攻杀条件:处于同一行,或同一
列,或同一斜线的皇后彼此攻杀。试给出全部方案。
我发现我和老师的思想老师不在一个方向。
上次的和质问题,我把代码都写在main()函数里面,接过来时写了很多函数。这次的N后问题,我写了很多函数,老师却都写在main()里面了。
下面是我写的:
【数据结构】
Work 其实是代表的每一行,Work[N] 中的N代表的是行号,那么coloum肯定就是列号了。
如图:
| 0 | 1 | 2 | 3 | 4 |
0 | ▲ □ |
|
|
|
|
1 |
|
| ▲ | □ |
|
2 |
| □ |
|
| ▲ |
3 |
| ▲ |
|
| □ |
4 |
|
| □ | ▲ |
|
▲:一种可能性
□:另一种可能性
侧边栏代表行,即a[N]中的N代表的那个。
上边栏表示列,即a[i].coloum,这个值是要从selectNum()函数中选择的。
此程序的其他地方跟上个程序(质和问题)是类似的,大家可以参考:http://blog.csdn.net/yinxusen/archive/2011/03/27/6281687.aspx
这两个问题同属于回溯的问题
下面是老师的程序