AcWing 1621. N 皇后问题(Java解法^ ^)
原题链接
简单
作者:
是晴天呀
,
2020-11-27 13:09:15
,
所有人可见
,
阅读 554
import java.util.Scanner;
public class T1621N皇后问题 { //阅读理解,仔细审题,每一行第一个数字代表每一行的规模
static Scanner sc=new Scanner(System.in);
static int n=sc.nextInt();
static String s[][]=new String[n][];
public static void main(String[] args) {
sc.nextLine();
for(int i=0;i<s.length;i++) {
s[i]=sc.nextLine().split(" ");
}
for(int i=0;i<n;i++) {
if(f(s[i])) {
System.out.println("YES");
}else {
System.out.println("NO");
}
}
}
public static boolean f(String s[]) {
int rec[]=new int[s.length-1];
for(int i=0;i<rec.length;i++) {
rec[i]=Integer.parseInt(s[i+1]);
}
for(int i=0;i<rec.length;i++) {
for(int j=0;j<i;j++) {
//这里i,j的取值限定了两个皇后不会在同一行出现,还要检测会不会在正负对角线或者同一列出现
if(i+rec[i]==j+rec[j]||i-rec[i]==j-rec[j]||rec[i]==rec[j]) { //三个条件一个都不要少
return false;
}
}
}
return true;
}
}
卧槽