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
原创粉丝点击