queen.c

来自「在一个N×N的国际象棋棋盘上放置N(1 &pound N &pound 12」· C语言 代码 · 共 51 行

C
51
字号
#include<stdio.h>
#define MAX 13

int x[MAX],n,r;
int place(int k);
int answer=0;
void backtrack(int t);


int main()
{

	scanf("%d",&n);

	backtrack(1);
	if(answer==0)
		printf("No\n");
	return 0;
}

void backtrack(int t)
{
	int i,j;
	if(t>n){
		for(i=1;i<=n;i++)
			printf("%4d",x[i]);
		printf("\n");
		answer=1;
		return;
	}

	else{
		for(j=1;j<=n;j++){
			x[t]=j;
			if(place(t))
				backtrack(t+1);
		}
	}
}

int place(int k)
{
	int j;
	for(j=1;j<k;j++){
		if( x[j]==x[k] || (k-j==x[j]-x[k]) || (k-j==x[k]-x[j]) )
			return 0;
	}

	return 1;
}

⌨️ 快捷键说明

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