回溯法解决N皇后问题
来源:互联网 发布:js 特殊字符校验 编辑:程序博客网 时间:2024/06/10 18:27
#include<stdio.h>int place(int x[ ],int k){ int i; for (i=1;i<k;i++) if ((x[i]==x[k])||(abs(x[i]-x[k])==abs(i-k))) return 0; return 1;}void print(int n,int x[]){int i;for(i=1;i<=n;i++) printf("%d ",x[i]);printf("\n");}void n_queens(int n,int x[]){ int k = 1; /* k:搜索深度 */ x[1] = 0; while (k>0) { x[k] = x[k] + 1;/* 在当前列加1的位置开始搜索 */ while((x[k]<=n)&&(!place(x,k))) /* 当前列位置是否满足条件 */ x[k]=x[k]+1; /* 不满足条件,继续搜索下一列位置 */ if (x[k]<=n) {/* 存在满足条件的列? */ if (k==n) {print(k,x);}/* 是最后一个皇后,完成搜索 */ else { k= k+1; x[k]=0; /* 不是,则处理下一个行皇后 */ } } else {/* 已判断完n列,均没有满足条件 */ x[k]=0; k-=1; } /* 第k行复位为0,回溯到前一行 */ }}int main(){int i,n,a[10];while(scanf("%d",&n)!=EOF){ n_queens(n,a); printf("\n");}return 0;}
0 0
- 回溯法解决N皇后问题
- 回溯法解决N皇后问题
- 回溯法解决N皇后问题
- 回溯法解决n皇后问题
- 回溯法解决N皇后问题
- 回溯法解决N皇后问题
- 回溯法解决N皇后问题
- 回溯法解决n皇后问题
- java回溯法解决n皇后问题
- 回溯法解决2n皇后(8皇后)问题
- n皇后问题-回溯法
- 【回溯法】n皇后问题
- N皇后问题,回溯法
- 回溯法---n皇后问题
- N皇后问题 【回溯法】
- 【回溯法】n皇后问题
- N皇后问题---回溯法
- N 皇后问题-回溯法
- leetcode--Kth Smallest Element in a BST
- 多线程(join和yield)
- Lucene七(搜索)
- Servlet学习
- NYOJ269VF【dp】
- 回溯法解决N皇后问题
- java.lang.ClassNotFoundException: Didn't find class "*****Activity" on path: /data/app/*******.apk
- HDU 1203
- 6.地址,Block,SEL,多态
- 你是ACM吗?
- 机试算法讲解: 第51题 动态规划之最长公共子序列问题
- [hdoj]1003最大子列和
- UVa 1586 Molar Mass
- hdu 2028