LeetCode——N-Queens II
来源:互联网 发布:js 360加速球效果 编辑:程序博客网 时间:2024/05/29 02:43
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
原题链接:https://oj.leetcode.com/problems/n-queens-ii/题目:求有多少个独立的解决方案。
与上题一致,只要每次成功后记录一下次数即可。
package leetcode;import java.util.ArrayList;import java.util.List;public class NQueensII {public static void main(String[] args) {System.out.println(new NQueensII().totalNQueens(5));}int res = 0; public int totalNQueens(int n) {List<String[]> result = new ArrayList<String[]>();List<Integer> cols = new ArrayList<Integer>();if(n <= 0)return 0;search(result,cols,n);return res; }public void search(List<String[]> result,List<Integer> cols,int n){if(cols.size() == n){result.add(draw(cols));res++;return;}for(int col=0;col<n;col++){if(!isValid(cols,col))continue;cols.add(col);search(result,cols,n);cols.remove(cols.size()-1);}}public String[] draw(List<Integer> cols){String[] chess = new String[cols.size()];for(int i=0;i<chess.length;i++){chess[i] = "";for(int j=0;j<cols.size();j++){if(j==cols.get(i))chess[i] += "Q";elsechess[i] += ".";}}return chess;}public boolean isValid(List<Integer> cols,int col){int row = cols.size();for(int i=0;i<row;i++){if(cols.get(i) == col)return false;if(i - cols.get(i) == row - col)return false;if(i+cols.get(i) == row+col)return false;}return true;}}
0 0
- LeetCode——N-Queens II
- LeetCode——N-Queens II
- leetcode 052 —— N-Queens II
- LeetCode: N-Queens II
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- 【leetcode】N-Queens II
- LeetCode: N Queens II
- [LeetCode]N-Queens II
- LeetCode - N-Queens II
- LeetCode:N-Queens II
- 【leetcode】N-Queens II
- LeetCode:N-Queens II
- Leetcode: N-Queens II
- leetcode N-Queens II
- LeetCode | N-Queens II
- Leetcode: N-Queens II
- LeetCode N-Queens II
- Eclipse中Maven+Spring3.2.8+SpringMVC HelloWorld项目
- window下的nginx+php的配置
- Java--类对象定义及存储原理
- IT忍者神龟之详细讲解提高数据库查询效率的实用方法
- 拓展欧几里得模板
- LeetCode——N-Queens II
- cocos2d-x 2.x使用python脚本快捷创建项目的简单方法
- bootstrap的js插件体验
- 王立平--android中的anim(动画)
- K-Means聚类算法
- LTE初始随机接入过程
- c语言中,如何用多个文件编写程序
- mutex和critical section的区别
- 编程之美 1.8小飞的电梯调度算法的第三种解