N皇后问题
来源:互联网 发布:正在安装软件更新 编辑:程序博客网 时间:2024/05/23 02:24
<pre name="code" class="cpp"><img src="http://img.blog.csdn.net/20140721213852764?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg5OTAwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
/*在一个N*N的国际象棋棋盘上放置N个皇后使得每个皇后不会互相攻击,计算出其所有的可能解分析:因为每个皇后的攻击范围是其所在的行和列以及对角线,所以,将每个皇后独立放在一行,使得皇后在行上面不会被攻击, 接下来只需要确保每行不被攻击即可,因此设置一个含N个元素的数组来放置每个皇后的所在的列,通过判断之前的皇后的攻击范围来确定当前位置是否可放置 */ #include <stdio.h>#include <string.h>#define N 100int search(int cur,int C[],int *tot,int n){int i,j;if(cur==n){(*tot)++;printf("Case %d:\n",*tot);for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(C[i]==j){printf("1,");}else printf("0,");}printf("\n");}}else for(i=0;i<n;i++){int ok=1;C[cur]=i;for(j=0;j<cur;j++){if(C[cur]==C[j]||cur-C[cur]==j-C[j]||cur+C[cur]==j+C[j]){ok=0;break;}}if(ok)search(cur+1,C,tot,n);}return 0;}int main(){int n;int tot;int C[N];while(scanf("%d",&n)==1){tot=0;memset(C,0,sizeof(C)); search(0,C,&tot,n);printf("%d\n",tot);}return 0;}
0 0
- N*N皇后问题
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N 皇后问题
- N皇后问题
- N皇后问题算法
- N 皇后问题
- N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N皇后问题优化
- N皇后问题
- n皇后问题
- N皇后问题
- iOS安全攻防(二十四):敏感逻辑的保护方案(1)
- *** ERROR L107: ADDRESS SPACE OVERFLOW
- GDI+画图2
- Android用getIdentifier()获取资源Id
- handler机制
- N皇后问题
- adobe reader安装完成之前被中断,错误代码150210解决方法
- 写给自已
- 最少回纹切割数(Palindrome Partitioning II)
- 一个女程序员的故事!!
- java单例模式四中方式
- android ART
- 快速Android开发系列网络篇之Android-Async-Http
- SparseArray源码阅读