您的位置:首页 > 编程语言 > C语言/C++

八皇后问题的C语言实现

2010-02-26 15:58 295 查看
问题就不描述了,直接上代码:



#include<stdio.h>
int chess[8][8]={0};
int a[8],b[15],c[15];
int sum=0;                                            //统计所有摆法
void PutQueen(int n)
{
	int col,i,j;
	for(col=0;col<8;col++)
	{
		if(a[col]&& b[n+col] && c[n-col+7])                 //判断安全位置
		{
			chess
[col]=1;                            //放置皇后
			a[col]=0;
			b[n+col]=0;
			c[n-col+7]=0;
			if(n==7)
			{
				sum++;
				printf("第%d种可能的摆法:/n",sum);    //输出皇后摆法
					for(i=0;i<8;i++){
						printf("/t/t");
						for(j=0;j<8;j++)
							printf("%d ",chess[i][j]);
						printf("/n");
					}
					printf("/n");
//					goto END;                         //输出第一种摆法
					if(sum%10==0)                     //每输出十种暂停
					{
						printf("按回车键继续……");
						getchar();
					}
			}
			else 
				PutQueen(n+1);                        //递归
			chess
[col]=0;                            //取消皇后
			b[n+col]=1;                                  
			c[n-col+7]=1;
			a[col]=1;                           
		}
	}
//END:	return;
}
int main()
{  
	int i;
	for(i=0;i<8;++i)
		a[i]=1;
	for(i=0;i<15;++i)
	{
		b[i]=1;
		c[i]=1;
	}
	PutQueen(0);
	printf("八皇后摆法总数: %d/n",sum);
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: