leetcode 51 N-Queens 回溯 万能结构

来源:互联网 发布:硫磺岛战役知乎 编辑:程序博客网 时间:2024/06/11 11:52

leetcode 51 N-Queens


n-皇后问题和求解置换问题类似,条件更加加强了一些

import java.util.ArrayList;import java.util.List;public class Solution {public static void main(String[] args){Solution s = new Solution();s.solveNQueens(4);}    public List<List<String>> solveNQueens(int n) {    List<List<String>> res = new ArrayList<List<String>>();    List<Integer> tmp = new ArrayList<Integer>();    solveNQueens(res,tmp,n);    return res;    }private void solveNQueens(List<List<String>> res, List<Integer> tmp, int n) {// TODO Auto-generated method stubif(tmp.size()==n){//TODO  List<String> elem = new ArrayList<String>();               for(int j=0;j<=n-1;j++){                   int val = tmp.get(j);                   String s = "";                   for(int h=0;h<=n-1;h++){                       if(h!=val){                           s += ".";                       }else{                           s += "Q";                       }                   }                   elem.add(s);               }               res.add(elem);  }else{for(int i=start;i<n;i++){if(!is_part_of_solution(tmp,i))  continue;tmp.add(i);solveNQueens(res,tmp,n);tmp.remove(tmp.size()-1);}}}private boolean is_part_of_solution(List<Integer> tmp, int i) {// TODO Auto-generated method stubint len = tmp.size();for(int j=0;j<len;j++){if(i==tmp.get(j)||i+len==j+tmp.get(j)||i-len==j-tmp.get(j)){return false;}}return true;}}


0 0
原创粉丝点击