@@ -0,0 +1,2256 @@
+public class Solution %7B%0A    int%5B%5D result;%0A    Stack s = new Stack();%0A    List%3CList%3CString%3E%3E f = new ArrayList%3CList%3CString%3E%3E();%0A    %0A    public List%3CList%3CString%3E%3E solveNQueens(int n) %7B%0A        result = new int%5Bn%5D;%0A        Arrays.fill(result, 0);%0A        %0A        boolean%5B%5D%5B%5D t = new boolean%5Bn%5D%5Bn%5D;%0A        for (boolean%5B%5D row: t)%7B%0A            Arrays.fill(row, true);%0A        %7D%0A%0A        s.push(t);%0A        %0A        determine(n, 0);%0A        return f;%0A    %7D%0A    %0A    private void determine(int n, int q)%7B%0A        boolean%5B%5D%5B%5D base = (boolean%5B%5D%5B%5D) s.peek();%0A        if(q == n)%7B%0A            insertANS(result);%0A            return;%0A        %7D%0A        for(int i = 0; i %3C n; i ++)%7B%0A            boolean%5B%5D%5B%5D tmp;%0A            if(base%5Bq%5D%5Bi%5D)%7B%0A                result%5Bq%5D = 1 %3C%3C (n - i - 1);%0A                tmp = setFalse(base, q, i);%0A                s.push(tmp);%0A                determine(n, q+1);%0A            %7D%0A        %7D%0A        s.pop();%0A        return;%0A    %7D%0A    %0A    private boolean%5B%5D%5B%5D setFalse(boolean%5B%5D%5B%5D t, int r, int c)%7B%0A        int n = t.length;%0A    %09boolean%5B%5D%5B%5D result = new boolean%5Bn%5D%5Bn%5D;%0A        for (int i = 0; i %3C n; i++) %7B%0A            result%5Bi%5D = Arrays.copyOf(t%5Bi%5D, n);%0A        %7D%0A        for(int i = 0; i %3C n; i ++)%7B%0A            result%5Br%5D%5Bi%5D = false;%0A        %7D%0A        for(int i = 0; i %3C n; i ++)%7B%0A            result%5Bi%5D%5Bc%5D = false;%0A        %7D%0A        for(int i = 0; r - i %3E= 0 && c + i %3C n; i ++)%7B%0A            result%5Br-i%5D%5Bc+i%5D = false;%0A        %7D%0A        for(int i = 0; r - i %3E= 0 && c - i %3E= 0; i ++)%7B%0A            result%5Br-i%5D%5Bc-i%5D = false;%0A        %7D%0A        for(int i = 0; r + i %3C n && c + i %3C n; i ++)%7B%0A            result%5Br+i%5D%5Bc+i%5D = false;%0A        %7D%0A        for(int i = 0; r + i %3C n && c - i %3E= 0; i ++)%7B%0A            result%5Br+i%5D%5Bc-i%5D = false;%0A        %7D%0A        return result;%0A    %7D%0A    %0A    private void insertANS(int%5B%5D r)%7B%0A        List%3CString%3E tmp = new ArrayList%3CString%3E();%0A        for(int i = 0; i %3C r.length; i ++)%7B%0A            String line = %22%22;%0A            for(int j = 0; j %3C r.length; j++)%7B%0A                int t = r%5Bi%5D %3E%3E j;%0A                if(t == 1)%7B%0A                    line = %22Q%22 + line;%0A                %7Delse%7B%0A                    line = %22.%22 + line;%0A                %7D%0A            %7D%0A            tmp.add(line);%0A        %7D%0A        f.add(tmp);%0A    %7D%0A%7D

Q51 N-Queens