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

📄 8queens.c

📁 c语言算法中的8皇后问题的解答 而且结果的输出很漂亮 一眼就明白
💻 C
字号:
/****************************************************
 *													*
 *			exp4.c									*
 *
 *													*
 ****************************************************/
#include <stdio.h>
#include <conio.h>
#include <math.h>

#define N 6
typedef enum{FALSE,TRUE}BOOL;

BOOL place(int k);
void NQUEENS(int n);
void OUTPUT(void);
int X[N+1];
int total=0;

int main()
{
	NQUEENS(1);
	printf("\nTotal:%5d\n",total);
	return 0;
}
BOOL place(int k)
{
	int i;
	i=1;
	while (i<k)
	{
		if (X[i]==X[k] || abs(X[i]-X[k])==abs(i-k))
			return FALSE;
		i++;
	}
	return TRUE;
}

void nextqueens(int k)
{
	while(1)
	{
		X[k] ++;

		while (X[k]<=N && !place(k))
		{
			X[k]=X[k]+1;
		}
		if(X[k] > N) {X[k] = 0;return;}
		else break;
	}
}


void NQUEENS(int k)
{
	int j;
	while(1)
	{
		nextqueens(k);

		if(X[k] == 0) break;

		if (k == N)
		{
				OUTPUT();
				total++;
		}
		else NQUEENS(k+1);
	}
}
void OUTPUT()
{
	int i,j,k;
	printf(" ");
	for (i=1; i<=N; i++) printf("%4d",i);
	printf("\n  ");
	for (i=1; i<=N; i++) printf("+---");
	printf("+\n");
	for (i=1; i<=N; i++)
	{
		printf("%-2d",i);
		for (j=1; j<X[i]; j++) printf("|   ");
		printf("| Q ");
		for (j=X[i]+1; j<=N; j++) printf("|   ");
		printf("|\n");
		printf("  ");
		for (k=1; k<=N; k++) printf("+---");
		printf("+\n");
	}
	if (!((total+1)%2))
	{
		printf("Press any key to continue...\n");
	   //	getche();
	}
	else printf("\n");
}

⌨️ 快捷键说明

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