大二算法 EightQeen
来源:互联网 发布:vb中log10 编辑:程序博客网 时间:2024/05/21 13:05
#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 100int Min(int x, int y);void Print(int A[], int n);void GEN_QUEEN(int A[], int k, int S[], int n);int Diagonal_Chk(int A[], int k, int s);int Abs(int x);// return absolute value for xint COUNT=0;int main(int argc, char *argv[]){ int N=MAX; int A[MAX + 1],S[MAX + 1],i; if(argc!=2){ printf("usage: run #3. the #3 is the board size, which must suppled while starting the prog\n"); exit(0); } else N = Min(atoi(argv[1]),MAX); for(i=1;i<=N;i++) S[i] = i; GEN_QUEEN(A,0,S,N); printf("------Counts %d compatable configuarations --------\n", COUNT); return 0;}void GEN_QUEEN(int A[], int k, int S[], int n){ if( k==n ){ // Print(A,n); COUNT++; } else{ int i; for(i=1;i<=n;i++){ if(S[i]!=0 && (Diagonal_Chk(A,k,S[i]) == 0 ) ){k++;A[k] = S[i];S[i] = 0;GEN_QUEEN( A, k, S, n);S[i] = A[k];k--; } } }}void Print(int A[], int n){ int i; for( i=1; i<=n; i++ ) printf("%3d",A[i]); putchar('\n');} int Min(int x, int y){ return x<y?x:y;}int Diagonal_Chk(int A[], int k, int s){ int i; for(i=1;i<=k;i++) if(Abs(k+1-i) == (Abs(s - A[i]))) return 1;//conflict return 0;// No confilict}int Abs( int x ){ return x>0? x:(-1*x);}
0 0
- 大二算法 EightQeen
- 大二算法上机学期总结
- 大二
- 大二
- 大二暑期《算法导论》学习笔记
- 回顾大学--大二数据结构实验--实验二 排序算法
- 我大二时写的各种排序算法
- 2015年大二上-数据结构-链表(3)-单链表算法
- 2015年大二上-数据结构-图-2-(1)-Prim算法
- 2015年大二上-数据结构-图-2-(2)-Kruskal算法
- 2015年大二上-数据结构-图-2-(3)-Dijkstra算法
- 2015年大二上-数据结构-图-2-(4)-Floyd算法
- 大二菜鸟接触算法,特开博客记录日常学习。
- 大二用C++写的各种排序算法
- 大二暑假《算法导论》学习笔记-第一天
- 大二一年
- 大二祭文
- 大二暑假
- Qt线程同步小案例
- 分支-02 三角形判断(15)
- 致我们几千公里的爱情
- linux shell 获取当前正在执行脚本的绝对路径
- 判断IOS程序是否是第一次运行
- 大二算法 EightQeen
- Device_token 和 UDID 的区别
- Extjs5需要引入的文件
- Spring 配置多个数据源,并实现动态切换
- mysql---运维角度浅谈MySQL数据库优化
- 获取文件路径的方法
- 身体自重训练之俯卧撑
- 【Caffe代码解析】Layer网络层
- Android - LayoutInflater