八皇后问题---自己的想法

#include <stdio.h>
int ceng=0;
int number=0;
int zong=0;
typedef struct zuobiao{
	int x;
	int y;
};
zuobiao b[5];
int fun(int x,int y);
int main(void)
{
/*printf("(1,1)的搜索\n")	;
fun(1,1);
printf("number:%d\n\n",number); 
zong+=number/3;
ceng=0;
number=0;	
printf("(2,2)的搜索\n")	;
fun(2,2);
printf("number:%d\n\n",number); 
zong+=number/3;
ceng=0;
number=0;
printf("(1,2)的搜索\n")	;

fun(1,2);
printf("number:%d",number); 
zong+=number/3;
printf("总数为%d",zong); */

	for(int j=1,i=1;j<=8;j++){
		fun(i,j);
		zong+=number;
		number=0;
	}

printf("共有%d种",zong);
} 
int fun(int x,int y)
{
    
	ceng++;
	b[ceng].x=x;
	b[ceng].y=y;
		printf("%d,%d 第%d层扫描\n",x,y,ceng);
	zuobiao a[25];
	int count=0;

		for(float j=1,i=x+1;j<=8;j++){
			if(((j-y)/(i-x)==1)||((j-y)/(i-x)==-1)||j==y||i==x){
				
				printf("skip %f,%f \n",i,j);
				continue;
			}
			else{
				int check=0;
				
				for(int k=1;k<=ceng-1;k++){
					if(j==b[k].y||i==b[k].x||((j-b[k].y)/(i-b[k].x)==1)||(j-b[k].y)/(i-b[k].x)==-1){
						check=1;
					}
				}
				if(check==1){
						printf("skip %f,%f \n",i,j);
						continue;
				} 
				    if(ceng==7) {
					
					number++;
					
			
			}
				
	//	printf("%d\n",count);
		     count++;
			a[count].x=i;
			a[count].y=j;
					printf("found %f,%f \n",i,j);
			}
			
		}
	
if(ceng==7) {
	printf("ceng is %d\n",ceng);
	ceng-=1;
	return 0;
}
printf("共计找到%d个可行点\n",count);
		if(count!=0){
			//printf("共计找到%d个可行点\n",count);
	for(int i=1;i<=count;i++){
	//	printf("%d,%d \n",a[i].x,a[i].y);
//	printf("共计找到%d个可行点\n",count);
         
		 fun(a[i].x,a[i].y);
	}
	}
	ceng-=1;
	return 0;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值