八皇后问题 非递归

4 篇文章 0 订阅
int main()
{   
	int here[8] = {-1,-1,-1,-1,-1,-1,-1,-1};//某行已遍历位置
	int a[8]; //某列有皇后
	int b[15];//主对角线有皇后 “/”
	int c[15];//次对角线有皇后 “\”
	int count=0;
	//memset(here,-1,sizeof(int)*8);
	
	memset(a,0,sizeof(int)*8);
	memset(b,0,sizeof(int)*15);
	memset(c,0,sizeof(int)*15);

	

	int line = 0;
	bool matched;
	while( line>=0 )//回溯未超出第0行
	{
		matched = false;
		
		
		for (int i =here[line]+1;i<8;i++)//从上一次遍历到的位置之后开始搜索
		{
			if (0==a[i] && 0==b[line+7-i] && 0==c[line+i])//第一个匹配的位置
			{
				if (here[line]>=0)//清除原记录
				{
					a[here[line]] = b[line+7-here[line]] = c[line+here[line]] = 0;
				}
				here[line] = i;
				a[i] = b[line+7-i] = c[line+i] = 1;
				matched = true;
				break;
			}
		}

		if (matched)
		{
			line++;//下一行
			if (line == 8)
			{
				count++;
				line--;
			}
		} 
		else
		{
			if (here[line]>=0)//清除原记录
			{
				int tmp = here[line];
				here[line] = -1;
				a[tmp] = b[line+7-tmp] = c[line+tmp] = 0;
			}
			
			line--;//回溯
		}

	}

	printf("%d\n",count);
	return 0;
}      


@ * * * * * * * 
* * * * @ * * * 
* * * * * * * @ 
* * * * * @ * * 
* * @ * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * @ * * * * 


@ * * * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* * @ * * * * * 
* * * * * * @ * 
* * * @ * * * * 
* @ * * * * * * 
* * * * @ * * * 


@ * * * * * * * 
* * * * * * @ * 
* * * @ * * * * 
* * * * * @ * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * @ * * * 
* * @ * * * * * 


@ * * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * @ * * * * 
* * * * * @ * * 
* * @ * * * * * 


* @ * * * * * * 
* * * @ * * * * 
* * * * * @ * * 
* * * * * * * @ 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * @ * 
* * * * @ * * * 


* @ * * * * * * 
* * * * @ * * * 
* * * * * * @ * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * * @ * * * * 


* @ * * * * * * 
* * * * @ * * * 
* * * * * * @ * 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * @ * * * * * 


* @ * * * * * * 
* * * * * @ * * 
@ * * * * * * * 
* * * * * * @ * 
* * * @ * * * * 
* * * * * * * @ 
* * @ * * * * * 
* * * * @ * * * 


* @ * * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* * @ * * * * * 
@ * * * * * * * 
* * * @ * * * * 
* * * * * * @ * 
* * * * @ * * * 


* @ * * * * * * 
* * * * * * @ * 
* * @ * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* * * * @ * * * 
@ * * * * * * * 
* * * @ * * * * 


* @ * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
* * * * * * * @ 
@ * * * * * * * 
* * * @ * * * * 
* * * * * @ * * 
* * @ * * * * * 


* @ * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
@ * * * * * * * 
* * @ * * * * * 
* * * * @ * * * 
* * * * * * @ * 
* * * @ * * * * 


* * @ * * * * * 
@ * * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * @ * * * * 
* * * * * @ * * 


* * @ * * * * * 
* * * * @ * * * 
* @ * * * * * * 
* * * * * * * @ 
@ * * * * * * * 
* * * * * * @ * 
* * * @ * * * * 
* * * * * @ * * 


* * @ * * * * * 
* * * * @ * * * 
* @ * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * * @ * * * * 
* * * * * * @ * 
@ * * * * * * * 


* * @ * * * * * 
* * * * @ * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * * @ 
* * * * * @ * * 


* * @ * * * * * 
* * * * @ * * * 
* * * * * * * @ 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * @ * * 


* * @ * * * * * 
* * * * * @ * * 
* @ * * * * * * 
* * * * @ * * * 
* * * * * * * @ 
@ * * * * * * * 
* * * * * * @ * 
* * * @ * * * * 


* * @ * * * * * 
* * * * * @ * * 
* @ * * * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * @ * * * * 
* * * * * * * @ 
* * * * @ * * * 


* * @ * * * * * 
* * * * * @ * * 
* @ * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * @ * * * * 


* * @ * * * * * 
* * * * * @ * * 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
* * * * * * @ * 
* @ * * * * * * 


* * @ * * * * * 
* * * * * @ * * 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
* * * * * * @ * 
@ * * * * * * * 


* * @ * * * * * 
* * * * * @ * * 
* * * * * * * @ 
@ * * * * * * * 
* * * @ * * * * 
* * * * * * @ * 
* * * * @ * * * 
* @ * * * * * * 


* * @ * * * * * 
* * * * * @ * * 
* * * * * * * @ 
@ * * * * * * * 
* * * * @ * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * @ * * * * 


* * @ * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* @ * * * * * * 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * @ * 
* * * * @ * * * 


* * @ * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
@ * * * * * * * 
* * * @ * * * * 
* * * * * @ * * 


* * @ * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * * @ * * * * 
@ * * * * * * * 
* * * * @ * * * 


* * @ * * * * * 
* * * * * * * @ 
* * * @ * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * * * @ * * 
* @ * * * * * * 
* * * * @ * * * 


* * * @ * * * * 
@ * * * * * * * 
* * * * @ * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * * * @ * 
* * @ * * * * * 
* * * * * @ * * 


* * * @ * * * * 
@ * * * * * * * 
* * * * @ * * * 
* * * * * * * @ 
* * * * * @ * * 
* * @ * * * * * 
* * * * * * @ * 
* @ * * * * * * 


* * * @ * * * * 
* @ * * * * * * 
* * * * @ * * * 
* * * * * * * @ 
* * * * * @ * * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * * @ * 


* * * @ * * * * 
* @ * * * * * * 
* * * * * * @ * 
* * @ * * * * * 
* * * * * @ * * 
* * * * * * * @ 
@ * * * * * * * 
* * * * @ * * * 


* * * @ * * * * 
* @ * * * * * * 
* * * * * * @ * 
* * @ * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* * * * @ * * * 
@ * * * * * * * 


* * * @ * * * * 
* @ * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * @ * * * * * 


* * * @ * * * * 
* @ * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
* * * * * * @ * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * @ * * 


* * * @ * * * * 
* @ * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
@ * * * * * * * 
* * @ * * * * * 
* * * * @ * * * 
* * * * * * @ * 


* * * @ * * * * 
* * * * * @ * * 
@ * * * * * * * 
* * * * @ * * * 
* @ * * * * * * 
* * * * * * * @ 
* * @ * * * * * 
* * * * * * @ * 


* * * @ * * * * 
* * * * * @ * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * @ * * * * * 
* * * * @ * * * 


* * * @ * * * * 
* * * * * @ * * 
* * * * * * * @ 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
* @ * * * * * * 


* * * @ * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
* @ * * * * * * 
* * * * * @ * * 
* * @ * * * * * 


* * * @ * * * * 
* * * * * * @ * 
* * @ * * * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * @ * * * 
@ * * * * * * * 
* * * * * @ * * 


* * * @ * * * * 
* * * * * * @ * 
* * * * @ * * * 
* @ * * * * * * 
* * * * * @ * * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * * * @ 


* * * @ * * * * 
* * * * * * @ * 
* * * * @ * * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* @ * * * * * * 


* * * @ * * * * 
* * * * * * * @ 
@ * * * * * * * 
* * @ * * * * * 
* * * * * @ * * 
* @ * * * * * * 
* * * * * * @ * 
* * * * @ * * * 


* * * @ * * * * 
* * * * * * * @ 
@ * * * * * * * 
* * * * @ * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * @ * * 
* * @ * * * * * 


* * * @ * * * * 
* * * * * * * @ 
* * * * @ * * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * @ * * 


* * * * @ * * * 
@ * * * * * * * 
* * * @ * * * * 
* * * * * @ * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * * * @ * 
* * @ * * * * * 


* * * * @ * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * @ * 
* * @ * * * * * 
* * * * * @ * * 


* * * * @ * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * @ * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * @ * * * * 


* * * * @ * * * 
* @ * * * * * * 
* * * @ * * * * 
* * * * * @ * * 
* * * * * * * @ 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * @ * 


* * * * @ * * * 
* @ * * * * * * 
* * * @ * * * * 
* * * * * * @ * 
* * @ * * * * * 
* * * * * * * @ 
* * * * * @ * * 
@ * * * * * * * 


* * * * @ * * * 
* @ * * * * * * 
* * * * * @ * * 
@ * * * * * * * 
* * * * * * @ * 
* * * @ * * * * 
* * * * * * * @ 
* * @ * * * * * 


* * * * @ * * * 
* @ * * * * * * 
* * * * * * * @ 
@ * * * * * * * 
* * * @ * * * * 
* * * * * * @ * 
* * @ * * * * * 
* * * * * @ * * 


* * * * @ * * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* @ * * * * * * 
* * * @ * * * * 
* * * * * * @ * 


* * * * @ * * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * * @ * * * * 


* * * * @ * * * 
* * @ * * * * * 
* * * * * * * @ 
* * * @ * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * * * @ * * 
* @ * * * * * * 


* * * * @ * * * 
* * * * * * @ * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * * @ * * * * 
* @ * * * * * * 


* * * * @ * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * @ * * * * * 


* * * * @ * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * @ * * * * 
* * * * * * * @ 
@ * * * * * * * 
* * @ * * * * * 
* * * * * @ * * 


* * * * @ * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * @ * * 
* * @ * * * * * 
@ * * * * * * * 
* * * @ * * * * 
* * * * * * * @ 


* * * * @ * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * @ * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * @ * * * * 


* * * * @ * * * 
* * * * * * @ * 
* * * @ * * * * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* @ * * * * * * 


* * * * @ * * * 
* * * * * * * @ 
* * * @ * * * * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * @ * * 
* @ * * * * * * 
* * * * * * @ * 


* * * * @ * * * 
* * * * * * * @ 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * @ * * 
* * @ * * * * * 


* * * * * @ * * 
@ * * * * * * * 
* * * * @ * * * 
* @ * * * * * * 
* * * * * * * @ 
* * @ * * * * * 
* * * * * * @ * 
* * * @ * * * * 


* * * * * @ * * 
* @ * * * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * @ * * * * * 
* * * * @ * * * 
* * * * * * * @ 
* * * @ * * * * 


* * * * * @ * * 
* @ * * * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * @ * * * * 
* * * * * * * @ 
* * * * @ * * * 
* * @ * * * * * 


* * * * * @ * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * @ * * * * 


* * * * * @ * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * @ * 
* * * * @ * * * 


* * * * * @ * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
* @ * * * * * * 
* * * @ * * * * 
* * * * * * @ * 


* * * * * @ * * 
* * @ * * * * * 
* * * * @ * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * * @ 


* * * * * @ * * 
* * @ * * * * * 
* * * * @ * * * 
* * * * * * * @ 
@ * * * * * * * 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * @ * 


* * * * * @ * * 
* * @ * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * @ * * * * 
* * * * * * * @ 
@ * * * * * * * 
* * * * @ * * * 


* * * * * @ * * 
* * @ * * * * * 
* * * * * * @ * 
* @ * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
@ * * * * * * * 
* * * @ * * * * 


* * * * * @ * * 
* * @ * * * * * 
* * * * * * @ * 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * @ * * * 


* * * * * @ * * 
* * * @ * * * * 
@ * * * * * * * 
* * * * @ * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * * * @ * 
* * @ * * * * * 


* * * * * @ * * 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
* * * * * * @ * 
@ * * * * * * * 
* * @ * * * * * 


* * * * * @ * * 
* * * @ * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * @ * * * * * 
* * * * @ * * * 
* @ * * * * * * 
* * * * * * * @ 


* * * * * @ * * 
* * * @ * * * * 
* * * * * * @ * 
@ * * * * * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * @ * * * 
* * @ * * * * * 


* * * * * @ * * 
* * * * * * * @ 
* @ * * * * * * 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
* * @ * * * * * 


* * * * * * @ * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * * * @ 
* * * * * @ * * 
* * * @ * * * * 
* @ * * * * * * 
* * * * @ * * * 


* * * * * * @ * 
* @ * * * * * * 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * * @ 
* * * * @ * * * 
* * @ * * * * * 
* * * * * @ * * 


* * * * * * @ * 
* @ * * * * * * 
* * * * * @ * * 
* * @ * * * * * 
@ * * * * * * * 
* * * @ * * * * 
* * * * * * * @ 
* * * * @ * * * 


* * * * * * @ * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* * * * @ * * * 
* @ * * * * * * 
* * * @ * * * * 


* * * * * * @ * 
* * @ * * * * * 
* * * * * * * @ 
* @ * * * * * * 
* * * * @ * * * 
@ * * * * * * * 
* * * * * @ * * 
* * * @ * * * * 


* * * * * * @ * 
* * * @ * * * * 
* @ * * * * * * 
* * * * @ * * * 
* * * * * * * @ 
@ * * * * * * * 
* * @ * * * * * 
* * * * * @ * * 


* * * * * * @ * 
* * * @ * * * * 
* @ * * * * * * 
* * * * * * * @ 
* * * * * @ * * 
@ * * * * * * * 
* * @ * * * * * 
* * * * @ * * * 


* * * * * * @ * 
* * * * @ * * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * @ * * 
* * * * * * * @ 
* @ * * * * * * 
* * * @ * * * * 


* * * * * * * @ 
* @ * * * * * * 
* * * @ * * * * 
@ * * * * * * * 
* * * * * * @ * 
* * * * @ * * * 
* * @ * * * * * 
* * * * * @ * * 


* * * * * * * @ 
* @ * * * * * * 
* * * * @ * * * 
* * @ * * * * * 
@ * * * * * * * 
* * * * * * @ * 
* * * @ * * * * 
* * * * * @ * * 


* * * * * * * @ 
* * @ * * * * * 
@ * * * * * * * 
* * * * * @ * * 
* @ * * * * * * 
* * * * @ * * * 
* * * * * * @ * 
* * * @ * * * * 


* * * * * * * @ 
* * * @ * * * * 
@ * * * * * * * 
* * @ * * * * * 
* * * * * @ * * 
* @ * * * * * * 
* * * * * * @ * 
* * * * @ * * * 


92

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值