C语言实现八皇后问题,考研复试

八皇后问题C语言

//八皇后问题
#include <stdio.h>
int Queenes[8],count=0;

 void print(){
 int line,index;
 for(line=0;line<8;line++)
 {
 	for(index=0;index<Queenes[line];index++) 	
 	printf("0");
 	printf("#");
 	for(index=Queenes[line]+1;index<8;index++) 	
	printf("0");
	printf("\n");
 } 
   printf("================\n");
 }
 

 int check(int line,int index){
 	int i;
 	for(i=0;i<line;i++){
 		if(Queenes[i]==index)
 		return 0;
 		if((i- Queenes[i] )==(line-index))
 			return 0;
 		if((Queenes[i]+i)==(index+line))
 			return 0;		 
	 }
	 return 1;
 } 
void eightQueenes(int line){
	int index; 
	for(index=0;index<8;index++){
	
	if(check(line,index)){
		Queenes[line]=index;
		if(line==7){
			  //统计摆法的Counts加1
                count++;
                //输出这个摆法
                print();
                //每次成功,都要将数组重归为0
			Queenes[line]=0;
			return;
		}
		eightQueenes(line+1) ;
		Queenes[line]=0;
	}
}
}
int main(){
	eightQueenes(0);//从零行开始
	printf("有%d种摆法",count) ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值