思路:
使用DFS.用一维数组表达坐标,其中下标为行,元素为列.A[i]=j表示将第i行的皇后放在j列上.一行一行依次遍历(从上往下),决定放在哪列(从左往右),这样就不用判断行冲突,只需要判断列冲突和主斜线副斜线冲突.(行-列)标识主斜线, (行+列)标识副斜线.
下面上代码.
#coding=utf-8
#风格1
def queen(A, cur=0):
if ...
分类:
编程语言 时间:
2014-11-20 12:08:18
阅读次数:
202
题意 中文n*n的棋盘放n个皇后(攻击同行/列/主副对角线) 使任何两个都不互相攻击 有多少种方法
枚举每一行 用vis[3][i]记录列 主对角线 副对角线是否被占 同列和对角线都没被占就继续枚举下一行 当枚举到n+1行的时候就是一个合法答案了
注: n*n的方阵中主对角线可以用(i-j+n)标号 副对角线可以用(i+j)标号
//ans[]={0,1,0,0,2,10,4...
分类:
其他好文 时间:
2014-11-20 12:00:27
阅读次数:
192
八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?在国际象棋的规则中,皇后的攻击范围为一个米字型,也就是说两个皇后不能位于同一个纵行,横行,斜线上。
其实八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当 n = 1 或 n ≥ 4 时问题有解。令一个一位数组a[n]...
分类:
其他好文 时间:
2014-11-16 17:21:30
阅读次数:
318
#include using namespace std; #define MAX 8int queen[MAX]={0};int sum = 0;void show(){ printf("("); for(int i =0;i<MAX;i++) { printf(" %d",queen[i...
分类:
编程语言 时间:
2014-11-15 01:23:48
阅读次数:
164
敲到n皇后,map一下算法
class Solution {
public:
vector > res;
void helper(vector &nums, int index, int n) {
if(index == n) {
bool flag = true;
for(int i = 0; i < n && flag; i++)...
分类:
其他好文 时间:
2014-11-12 16:27:33
阅读次数:
185
3101: N皇后
Time Limit: 10 Sec Memory Limit: 128 MBSec Special Judge
Submit: 70 Solved: 32
[Submit][Status]
Description
n*n的棋盘,在上面摆下n个皇后,使其两两间不能相互攻击…
Input
一个数n
Output
...
分类:
其他好文 时间:
2014-11-11 09:22:54
阅读次数:
331
代码:#include #include #include using namespace std;const int N=100;int c[N];//皇后第i行放在第几列上int n,total;int cc;//方法数void dfs(int cur){ if(cur>n) { ...
分类:
其他好文 时间:
2014-11-08 20:48:27
阅读次数:
166
前言最近学习的过程中,不知道哪门子的思维发散,突然又遇见皇后问题了,于是乎老调重弹,心里琢磨,虽然思路大家都容易懂,哪怕是最简单的野蛮回溯法,说着简单,但是如果非得编码实现?我可以一次性写出来OK的代码吗?我对此表示疑问,于是乎动手写代码,发现写此类算法问题,最重要的是边界条件的判断。这里说明一下,...
分类:
编程语言 时间:
2014-11-04 01:25:14
阅读次数:
271
八皇后是一道很具典型性的题目。它的基本要求是这样的:在一个8*8的矩阵上面放置8个物体,一个矩阵点只允许放置一个物体,任意两个点不能在一行上,也不能在一列上,不能在一条左斜线上,当然也不能在一条右斜线上。 初看到这道题目,大家的第一印象是遍历,但是经过实践之后发现遍历其实不好写,而且复杂度很低。不仅...
分类:
其他好文 时间:
2014-11-01 21:36:43
阅读次数:
106
著名的N皇后问题,就是先按照行一行一行的找,先找第一行,第一行找到一列能满足条件,继续找下一行,如果下一行也找到一列能满足条件,继续找下一行,一次类推,最终找到解, 但是,如果找不到的话, 就说明上一行放的位置错误, 所以回溯到上一行中,继续找下一列,如果找不到,继续回溯,大体就是这么执行找到解的。...
分类:
其他好文 时间:
2014-11-01 11:26:55
阅读次数:
221