赞
踩
LeetCode链接:https://leetcode.cn/problems/n-queens
解题思路:
class Solution { ArrayList<List<String>> mLists=new ArrayList<>(); public List<List<String>> solveNQueens(int n) { int[] arr=new int[n+1]; setQueen(1, n, arr); return mLists; } public void setQueen(int row,int n,int[] arr){ if (row==n+1) { mLists.add(generateBoard(arr, n)); return; } for (int i = 1; i <=n; i++) { if(checked(row,i,arr)){ arr[row]=i; setQueen(row+1, n, arr); } } } public boolean checked(int row,int col,int[] arr){ for (int i = 1; i < row; i++) { if (col==arr[i] || arr[i]+i==row+col || i-arr[i]==row-col) { return false; } } return true; } public List<String> generateBoard(int[] queens, int n) { List<String> board = new ArrayList<String>(); for (int i = 0; i < n; i++) { char[] row = new char[n]; Arrays.fill(row, '.'); row[queens[i+1]-1] = 'Q'; board.add(new String(row)); } return board; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。