51.N皇后

class Solution {
    public List<List<String>> solveNQueens(int n) {
                final List<List<String>> lists = new ArrayList<>();
        int[] nums = new int[n];
        for(int i = 0; i < n; i++){
            nums[i] = Integer.MIN_VALUE;
        }
        queen(lists, nums, 0);
        return lists;
    }

    public void queen(List<List<String>> lists, int[] nums, int cur){
        if(cur == nums.length){
            List<String> list = new ArrayList<>();
            StringBuilder sb ;
            for(int i = 0; i < nums.length; i++){
                sb = new StringBuilder();
                for(int j = 0; j < nums.length; j++){
                    if(j == nums[i]){
                        sb.append("Q");
                    } else {
                        sb.append(".");
                    }
                }
                list.add(sb.toString());
            }
            lists.add(list);
            return ;
        }
        for(int col = 0; col < nums.length; col++){
            nums[cur] = col;
            boolean flag = true;
            for(int row = 0; row < cur; row++){
                if(nums[row] == col || Math.abs(col - nums[row]) == cur - row){
                    flag =false;
                    break;
                }
            }
            if(flag){
                queen(lists, nums, cur+1);
            }
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容