c-nqueens.cpp

来自「C_NQueens Ask not what your country can 」· C++ 代码 · 共 67 行

CPP
67
字号
#include "stdio.h"

int X[128];

int ABS(int r){
	if(r>=0) return r;
	else return(-r);
}

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=i+1;
    }
	return(true);
}

int NQueens(int n){
	int k,count=0;
    X[1]=0;
	k=1;
	while(k>0){
		X[k]=X[k]+1;
		while(X[k]<=n && !place(k)){
			X[k]=X[k]+1;
		} 
		if(X[k]<=n){
			if(k==n){ 
				printf("print X%d:\n",++count);				
				for(int m=1;m<=k;m++){
					for(int b=1;b<=k;b++){
					  if(b==X[m]) printf(" Q");
					  else printf(" *");					  
					}
					printf("\n");
				}
				printf("\n");				
//				if(count==k) return 1;
			}
			else{
				k=k+1;
				X[k]=0;
			}
		}	
        else k=k-1;		
	} 
	return 0;
}

void main(){
    int a;
    printf("please input a integer data:");
    scanf("%d",&a);
    NQueens(a);
}








⌨️ 快捷键说明

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