n后.cpp

来自「在学习计算算法分析与设计时编写的几个算法代码」· C++ 代码 · 共 41 行

CPP
41
字号
#include"stdio.h"
#include"math.h"
int n=8;
int sum=0;
int x[9]={0};
bool place (int k,int a)
{
      for (int j=1;j<k;j++)
      if ((abs(k-j)==abs(x[j]-a))||(x[j]==a)) return 0;
      return 1;
} 
void backtrack (int t,int x[])
{
	int i,k;
	if (t>n) {
		sum++;
	
			for(int j=1;j<=n;j++)
					printf("%5d",x[j]);
	        printf("\n");
		
	}
      else
          for (i=1;i<=n;i++) {
            x[t]=i;
            if (place(t,x[t])) backtrack(t+1,x);
		  }
}

main()
{
	
	int i,j;
	backtrack(1,x);
	//for(j=1;j<9;j++)
	//{for(i=1;i<9;i++)
	//	printf("%5d",x[i]);
	printf("%5d\n",sum);
	//}
}

⌨️ 快捷键说明

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