n 皇后问题
代码
//
// main.c
// algorithm
//
// Created by athlonreg on 17/01/2018.
// Copyright © 2018 athlonreg. All rights reserved.
//
#include <stdio.h>
#include <math.h>
#define n 8
int a[n];
int count=0;
int judge(int t){
if(t==n)
return 0;
for(int i=0;i<t;i++){
for(int j=i+1;j<=t;j++){
if(a[i]==a[j])
return 0;
if(abs(i-j)==abs(a[i]-a[j]))
return 0;
}
}
return 1;
}
void traceback(int t){
int i;
if(t==n){
count++;
for(i=0;i<n;i++)
printf("%3d", a[i]);
printf("\n");
}
for(i=0;i<n;i++){
a[t]=i;
if(judge(t))
traceback(t+1);
}
}
int main(int argc, const char * argv[]) {
traceback(0);
printf("%d\n", count);
return 0;
}
运行结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 套陆的博客!
评论
TwikooUtterances