⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queens8.c

📁 scheme实现的八皇后问题
💻 C
字号:
/*递归实现*/
#include <stdio.h>
static char queen[8][8];
static int a[8];
static int b[15];//主对角线
static int c[15];//从对角线
static int iQueenNum=0;
void qu(int i);//i代表行
int main()
{
	int iLine,iColumn;
		int l=0,cc=0;
	//棋盘初始化
	for(iLine=0;iLine<8;iLine++)
	{
		a[iLine]=0;//列标记初始化,表示无列冲突
		for(iColumn=0;iColumn<8;iColumn++)
		{
			queen[iLine][iColumn]='*';
		}
	}
	for(iLine=0;iLine<15;iLine++)
	{
		b[iLine]=0;
		c[iLine]=0;
	}

	qu(0);

	return 0;
}

void qu(int i)
{
	int iColumn;
	for(iColumn=0;iColumn<8;iColumn++)
	{
		if(a[iColumn]==0&&b[i-iColumn+7]==0&&c[i+iColumn]==0)
		{
			queen[i][iColumn]='@';
			a[iColumn]=1;
			b[i-iColumn+7]=1;
			c[i+iColumn]=1;
			if(i<7)
				qu(i+1);
			else
			{
				int l,cc;
				printf("Solution No.%d:\n",++iQueenNum);
				for(l=0;l<8;l++)
				{
					for(cc=0;cc<8;cc++)
					{
						printf("%c ",queen[l][cc]);
					}
					printf("\n");
				}
			}	
			queen[i][iColumn]='*';
			a[iColumn]=0;
			b[i-iColumn+7]=0;
			c[i+iColumn]=0;

		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -