import java.util.*; public class Bahuanghou3 { public static int n=0; public static int count=0; public static void main(String args[]){ Scanner in=new Scanner(System.in); n=in.nextInt(); int num[][]=new int[n][n]; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ num[i][j]=0; } } dfs(num,0); System.out.println(count); } public static void dfs(int num[][],int row){ if(row==n){ count++; }else{ for(int i=0;i<n;i++){ num[row][i]=1; if(check(num,row,i)){ dfs(num,row+1); } num[row][i]=0; } } } public static boolean check(int num[][],int row,int col){ int cnt_row=0; int cnt_col=0; for(int i=0;i<num.length;i++){ if(num[i][col]==1){ cnt_col++; } } for(int i=0;i<num.length;i++){ if(num[row][i]==1){ cnt_row++; } } if(cnt_row>1 || cnt_col>1){ return false; } int zx=row-1,zy=col-1; while(zx>=0 && zy>=0){ if(num[zx][zy]==1){ return false; } zx--; zy--; } int yx=row-1,yy=col+1; while(yx>=0 && yy<num.length){ if(num[yx][yy]==1){ return false; } yx--; yy++; } return true; } }
八皇后问题-DFS深度搜索-递归
最新推荐文章于 2024-08-28 12:34:50 发布