本蒟蒻的题解:
查看原帖
本蒟蒻的题解:
140770
Trash007楼主2022/3/30 20:43
import java.util.*;
public class  Main {
       static int n;
       static int ans =0;
       static int count = 0;
       static boolean check(int[]map, int  row , int column) {
           for (int i = 0; i < row; i++) {
                if(map[i] == column) return false;
                if(i+map[i] == column+row) return false;
                if(i-map[i] == row - column) return false;
           }
           return true;
       }
       static void dfs(int[] map,int row) {
           if(row == n) {
               ans++;
               count++;
               if(count <=3) {
                   for (int i = 0; i <map.length ; i++) {
                       System.out.print((map[i]+1)+" ");
                   }
                   System.out.println();
               }
               return ;
           }
           for (int i = 0;i<n;i++) {
               if(check(map,row,i)) {
                   map[row] =i;
                   dfs(map,row+1);
                   map[row] = 0;
               }
           }
       }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n =sc.nextInt();
        int []map = new int[n];
        dfs(map,0);
        System.out.println(ans);
    }
}

2022/3/30 20:43
加载中...