栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习笔记--N皇后(java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习笔记--N皇后(java)

N皇后问题
N皇后问题是值在N*N的棋盘上要摆N个皇后
要求任何两个皇后不同行,不同列,也不在同一条斜线上
返回摆法的种类

限制行,让每一行只能摆一个元素
用一个数组来表示放的位置,record[0...i-1]
比如record[0]=7代表0行的元素放在了7列,也就是说下标表示行,值表示列
当到达终止行时返回,
如果没有到终止位置假设当前在第i行,
递归尝试所有的列
如果可以摆的话就继续递归,如果不是,则认为无效
怎么验证可以摆哪?

 

public static int num(int n) {
		if(n<1) return 0;
		int []record=new int[n];
		return process1(0,record,n);
	}
	//n表示结束位置
	//record[0..i-1]表示之前的行,放了皇后的位置
	//i是多少行
	public static int process1(int i,int []record,int n) {
		if(i==n) return 1;//终结行
		//没到终结位置,还有皇后要摆
		int res=0;
		for(int j=0;j 

结果:92

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号