范紫晨


私信TA

用户名:dotcpp0729894

访问量:581

签 名:

等  级
排  名 3631
经  验 1881
参赛次数 0
文章发表 10
年  龄 0
在职情况 学生
学  校 江西财经大学
专  业

  自我简介:

参考代码:

import java.util.*;

public class Main {

static boolean[]c=new boolean[10];

static boolean[]djx=new boolean[20];

static boolean[]xdjx=new boolean[20];

static boolean[]c1=new boolean[10];

static boolean[]djx1=new boolean[20];

static boolean[]xdjx1=new boolean[20];

static int[][]g=new int[10][10];

static int[][]w=new int[10][10];

static int n;

static int ans=0;

public static void main(String[]args) {

Scanner sc = new Scanner(System.in);

n=sc.nextInt();

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)g[i][j]=sc.nextInt();

dfs(1);

System.out.print(ans);

}

public static void dfs(int r) {

if(r==n+1) {

dfs1(1);

return;

}

for(int i=1;i<=n;i++) {

if(!c[i]&&!djx[r+i]&&!xdjx[r-i+n]&&g[r][i]==1) {

w[r][i]=1;

c[i]=djx[r+i]=xdjx[r-i+n]=true;

dfs(r+1);

c[i]=djx[r+i]=xdjx[r-i+n]=false;

w[r][i]=0;

}

}

}

public static void dfs1(int r) {

if(r==n+1) {

ans++;

return;

}

for(int i=1;i<=n;i++) {

if(!c1[i]&&!djx1[r+i]&&!xdjx1[r-i+n]&&g[r][i]==1&&w[r][i]==0) {

c1[i]=djx1[r+i]=xdjx1[r-i+n]=true;

dfs1(r+1);

c1[i]=djx1[r+i]=xdjx1[r-i+n]=false;

}

}

}

}



 

0.0分

0 人评分

  评论区

  • «
  • »