程序员面试金典(动态规划):8(n)皇后问题(java解法)
来源:互联网 发布:windows xp系统重装 编辑:程序博客网 时间:2024/06/10 07:17
题目描述
请设计一种算法,解决著名的n皇后问题。这里的n皇后问题指在一个nxn的棋盘上放置n个棋子,使得每行每列和每条对角线上都只有一个棋子,求其摆放的方法数。
给定一个int n,请返回方法数,保证n小于等于10
import java.util.*;public class Queens { //Solution: 定义一个全局变量sum作为最后的返回值 //定义一个int[] cols数组用来记录已经访问过列 //然后逐列进行查找,递归和backtrack。 public static int sum; public int nQueens(int n) { sum=0; int[] cols=new int[n]; //cols用来定义已访问过的列 helper(cols,n,0); return sum; } private void helper(int[] cols, int n, int row){ if(row==n){ sum++; return; } for(int i=0;i<n;i++){ if(isValid(cols,row,i)) { //如果合法,那么继续做下一行 cols[row]=i; helper(cols,n,row+1); } } } private boolean isValid(int[] cols, int row, int col) { //定义 isValid 来check是否合法 for(int i=0;i<row;i++){ if(cols[i]==col){ return false; } if((row-i)==Math.abs(col-cols[i])){ return false; } } return true; } }
0 0
- 程序员面试金典(动态规划):8(n)皇后问题(java解法)
- 程序员面试金典(动态规划):约瑟夫环问题(java解法)
- 程序员面试金典(动态规划):叠罗汉问题_最长递增子序列(java解法)
- 程序员面试金典(动态规划):返回某集合的所有子集(java解法)
- N皇后问题(回溯算法解法)
- N皇后问题(递归和动态规划)
- 程序员面试金典: 9.9 递归和动态规划 9.9八皇后问题
- [算法]经典算法8皇后(N皇后)问题的解法,C语言实现
- 约瑟夫问题(动态规划解法)
- leetcode:N-Queens (n皇后问题) 【面试算法题】
- N皇后问题解法
- N皇后问题可视化实现(java)
- 八皇后问题(N皇后问题)
- TSP问题的动态规划解法(c#实现)
- "八皇后"问题的解法(1)
- 八皇后问题(dfs常规解法)
- N-Queens(N皇后问题) --Java版
- 回溯法解决2n皇后(8皇后)问题
- js中遍历json
- 【SSH进阶之路】Spring的IOC逐层深入——依赖注入的两种实现类型(四)
- OCX和DLL的区别--OCX控件的应用
- 【POJ3207】Ikki's Story IV - Panda's Trick【2-SAT】
- 亲测实验,stm32待机模式和停机模式唤醒程序的区别,以及唤醒后程序入口。
- 程序员面试金典(动态规划):8(n)皇后问题(java解法)
- TopKElements和Hashmap的空间复杂度问题
- 判断字符串是否没有重复字符
- 编译个性化的openwrt固件
- [Java]根据文件取得Mime Type的各种方法
- 观察者模式
- sql Server 锁
- HTML5 canvas绘制雪花飘落动画(需求分析、知识点、程序编写分布详解)
- php中模拟POST提交数据两种方法