• LeetCode——N-Queens II


    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";
    				else
    					chess[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;
    	}
    }
    



  • 相关阅读:
    CentOS6.9依赖包快速安装指南
    CentOS 6.5安装部署Zabbix 3.05指南
    Nginx最佳安装与优化
    Linux Bonding最优配置
    macOS下用命令行发邮件
    Linux iperf网络性能测试
    MTR网络诊断自动脚本实例
    nmon监控linux资源使用情况
    思科HSRP配置实例
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4357814.html
Copyright © 2020-2023  润新知