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

📄 queen.cpp

📁 约瑟夫环源代码,前中后序递归遍历二叉树
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h>
int a[8];//记录每行(0--8)棋子所在的列;
int n=1;//记录解决问题的摆法;
int ok(int r,int l){
	int i=0;
	for(i=0;i<(r-1);i++){//判断同列是否有棋子
		if(a[i]==l)return 0;	
	}
	for(i=1;i<r;i++){
		int m=l-r+i;
		while((m>0)&&(m<9)){
			if(a[i-1]==m)return 0;//判断左对角线是否有棋子
			else break;
		}
		m=l+r-i;
		while((m<=8)&&(m>0)){		
			if(a[i-1]==m)return 0;//判断有对角线是否有棋子
			else break;
		}
	}
	return 1;
}

void queen(int r){
	if(r>8){		
		for(int i=0;i<8;i++){
			printf("row=%d",i+1);
			printf(",line=");
			printf("%d",a[i]);
			printf("\n");			
		}
		printf("**********************,n=");//输出一种摆法,
		printf("%d",n);
		n=n+1;
		printf("\n");
	}
	else{		
		for(int l=1;l<=8;l++){
			if(ok(r,l)==1){//判断摆法是否合理;
				a[r-1]=l;//记录第r行棋子所在列;	
				queen(r+1);				
			}				
		}	
	}
}

void main(){
	int r=1,n=0;
	queen(1);
}

⌨️ 快捷键说明

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