八皇后问题(无考虑对称解)

#include<stdio.h>
int des[8][8],lie[8],d1[15],d2[15];//d1记录上对角线,d2记录下对角线
int count;

void dfs(int n){
	if(n==8)
		count++;return ;
	int i=0;
	for(i;i<8;i++){
		if(!des[n][i]&&!lie[i]&&!d1[n+i]&&!d2[n-i+7]){
			des[n][i]=1;
			lie[i]=1;
			d1[n+i]=1;
			d2[n-i+7]=1;
			dfs(n+1);
			des[n][i]=0;
			lie[i]=0;
			d1[n+i]=0;
			d2[n-i+7]=0;
		}
	}
	if(i!=8){
		return ;
	}
}

int main(){
	dfs(0);
	printf("%d",count);
	return 0;
}
发布了16 篇原创文章 · 获赞 15 · 访问量 1556

猜你喜欢

转载自blog.csdn.net/qq_43320728/article/details/104621788
今日推荐