人生如逆旅,我亦是行人!江湖人称wsjjeremy.blog.chinaunix.net
ubuntuer
全部博文(930)
intern(3)
string(19)
正则表达式(5)
2011年(60)
2010年(220)
2009年(371)
2008年(279)
baocheng
nba76ers
renjian2
qq576709
mcn304
zibuyule
西农魔峰
曾德标
zhuqing_
shanck
tendy
moshangx
wb123456
smile124
hjshajsh
chenhong
bzhao
python16
分类: BSD
2009-08-16 13:56:45
#include <stdio.h>#include <stdlib.h>#define N 8int count = 0;int abs(int num){ if(num<0) num *= -1; return num; }/***0-conflict***** *1-not conflict*** ******************/int check_conflict(int queen[], int n){ int i; int j; for(i=0;i<=n;i++) { for(j=0;j<=n;j++) { if(i!=j && (queen[i]==queen[j] || abs(queen[i]-queen[j]) == abs(j-i))) return 0; } } return 1;}void print_queen(int queen[], int n){ int i; int j; int A[n][n]; for(i=0;i<n;i++) for(j=0;j<n;j++) { if(j == queen[i]) A[i][j]=1; else A[i][j]=0; } for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%4d",A[i][j]); } printf("\n"); }}int count_n_queen(int queen[], int i, int n){ if(i>=n) { print_queen(queen, n); count++; //system("PAUSE"); } else { int j; for(j=0;j<n;j++) { queen[i] = j; if(check_conflict(queen, i)) count_n_queen(queen, i+1, n); } } }int main(int argc, char *argv[]){ int i; int queen[N]; for(i=0; i<N; i++) queen[i] = -1; count_n_queen(queen,0,N); printf("%d queens has total %d\n", N, count); system("PAUSE"); return 0;}
上一篇:ip攻击
下一篇:0-1背包问题
登录 注册