八皇后2.cpp

来自「这里面是很多经典算法的源代码」· C++ 代码 · 共 52 行

CPP
52
字号
#include<stdio.h>
#include<math.h>
int a[20];
int n;
int check(int j)
{
	for(int i=0;i<j;i++)
	{
		if((fabs(a[i]-a[j])==fabs(j-i))||(a[i]==a[j]))
			return 0;
	}
	return 1;
}
void out()
{
	for(int i=0;i<n;i++)
		{
			printf("%d ",a[i]);
		}
}
main()
{
	
	scanf("%d",&n);
	int k=0;
	while(k>=0&&k<n)
	{
		while(a[k]<n&&!check(k))
		{
			a[k]++;
		}
		if(a[k]<n)
		{
			if(k==n-1)
			{
				printf("\n");
				out();
				a[k]++;
			}
			else
			{
				k++;	
			}
		}
		else
		{
			a[k]=0;
			k--;
			a[k]++;
		}
	}
}

⌨️ 快捷键说明

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