`
lylegend13
  • 浏览: 81137 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

一维数组,N皇后

    博客分类:
  • Java
 
阅读更多

 

import java.util.Arrays;

public class test {
	public static void main(String[] args) {
		new test();
	}

	int count = 0;

	public test() {
		int N = 6;
		int[] a = new int[N];
		a[0] = -1;
		for (int i = 0; i < N; i++) {
			Arrays.fill(a, 1, N, -1);
			find(0, a, N);
		}
		System.out.println(count);
	}

	public void find(int row, int[] a, int length) {
		a[row]++;
		for (int i = 0; i <= row - 1; i++) {
			if (a[i] == a[row]) {
				return;
			}
			if (Math.abs(i - row) == Math.abs(a[i] - a[row])) {
				return;
			}
		}
		if (row + 1 < length) {
			for (int i = 0; i < length; i++) {
				Arrays.fill(a, row + 2, length, -1);
				find(row + 1, a, length);
			}
		} else {
			for (int i = 0; i < length; i++) {
				System.out.print(a[i] + "\t");
			}
			System.out.println();
			count++;
		}
	}
}

N皇后的解的个数,可以参考:

http://bbs.ednchina.com/BLOG_ARTICLE_2129140.HTM

分享到:
评论

相关推荐

    关于N皇后问题(一维数组)

    主要利用一维数组和下表和它的值巧妙的进行分析,来得出二者之间的关系

    N皇后问题(二维数组)

    主要是用二维数组的方式来进行对问题的求解,用二维数组来绘制每次放置的N皇后,然后再用一个新变量来记录回溯的点

    N 皇后算法 C+的代码

    N 皇后算法 十二个不同的代码 我和同学解决N皇后问题的...包括有栈实现,和一维数组实现 和一维动态数组实现 和二维数组实现。 还有收录了两个来自于网上的算法也就是我们所参考的算法。 一个为剪枝法,一个为回溯法

    N皇后问题求解

    N皇后启发式和盲目式搜索,第一个用一个数组实现,启发式搜索用一个二维数组表示

    基于C++解决 2N 皇后问题【100010906】

    在实现 N 皇后问题求解的时候,我采用了大小为 N 的一维数组保存当前的皇后摆放状态,数组下标为当前皇后所在的行,数组元素的值即为当前皇后摆放的列。这样的做法将一个二维问题降到一维来存储,有效地节省了空间...

    n皇后问题求解(默认8)

    一维数组的n皇后问题求解,其中n用define 默认值为8。有详细的注解,包含具体思路。过程简洁,输出美观。

    八皇后问题的回溯法实现

    八皇后问题的回溯法实现,一维数组,可拓展到N皇后

    c++递归实现n皇后问题代码(八皇后问题)

    一维数组就能判断,比如Arr[i],就可以表示一个元素位于第i行第Arr[i]列——应用广泛的小技巧。而且在这里我们不用考虑去存储整个矩阵,如果Arr[i]存在,那么我们在打印的时候,打印到皇后位置的时候输出1,非皇后位...

    C语言实例解析精粹

    012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前...

    课程设计实验——八皇后_VC++游戏

     * 程序中用八进制数用一个一维数组 data[] 表示  *  * 检测冲突:  * 横列冲突:data == data[j]  * 斜列冲突:(data+i) == (data[j]+j) 或者 (data-i) == (data[j]-j)  *  * 好处:  * 采用循环,而不是递...

    leetcode最难-algorithms:编码面试人员

    有一个公式可以将二维矩阵转换为一维数组,反之亦然 -- n * m 矩阵转换为数组 =&gt; matrix[x][y] =&gt; a[x * m + y] -- 数组转换为 n * m 矩阵 =&gt; a[x] =&gt;matrix[x / m][x % m]; 幂集算法(leetcode 中的子集) 弦上的 ...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    7.1.2 一维数组元素的引用 83 7.1.3 一维数组的初始化 84 7.1.4 一维数组程序举例 84 7.2 二维数组的定义和引用 86 7.2.1 二维数组的定义 86 7.2.2 二维数组元素的引用 86 7.2.3 二维数组的初始化 87 7.2.4 二维数组...

    220个经典C程序源码文件,可以做为你的学习设计参考.zip

    012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前...

    200个经典C程序源码(包括基础篇+数据结构篇+数值计算与趣味数学篇+图形篇+系统篇+常见试题解答篇).zip

    012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    7.1.2 一维数组元素的引用 83 7.1.3 一维数组的初始化 84 7.1.4 一维数组程序举例 84 7.2 二维数组的定义和引用 86 7.2.1 二维数组的定义 86 7.2.2 二维数组元素的引用 86 7.2.3 二维数组的初始化 87 7.2.4 二维数组...

    220个C语言程序源代码.zip

    012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前...

    200个C程序.rar

    012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前...

    220个C语言程序源代码集合.zip

    012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前...

    典型算法的数据结构及C++代码实现

    包含:一、分治法求最近点对问题 二、采用贪心算法解决单会场安排问题 三、基于动态规划的游艇租用问题 四、回溯法解决部落卫队问题 五、分支定界解决N皇后问题

Global site tag (gtag.js) - Google Analytics