N皇后

22 阅读1分钟

image.png

image.png

class Solution {
		List <List<String>> result = new ArrayList();
	    public List<List<String>> solveNQueens(int n) {
	    	int []arr = new int[n];
	    	dfs(0,arr);
	       return result;
	    }
	    public void dfs(int n,int arr[]) {
	    	if(n==arr.length) {
	    		List<String> list = new ArrayList<>();
	    		for (int i = 0; i < arr.length; i++) {
	    			String str = "";
					for (int j = 0; j < arr.length; j++) {
						if(j==arr[i]) {
							str+="Q";
						}else{
							str+=".";
						}
						
					}
					list.add(str);
				}
	    		result.add(list);
	    		return;
	    	}
	    	for (int i = 0; i < arr.length; i++) {
				if(check(arr,i,n)) {
					arr[n] = i;
					dfs(n+1,arr);
				}
			}
	    }
	    public boolean check(int arr[],int i,int n) {
	    	for (int j = 0; j < n; j++) {
				if(i==arr[j]||Math.abs(i-arr[j])==Math.abs(n-j)) {
					return false;
				}
			}
	    	return true;
	    }
}