-
时间:2016-04-17 16:20:49 星期日
-
题目编号:[2016-04-17][Gym][100947][B][Queens, Again!!]
-
题目大意:8皇后问题,给出8皇后的位置,判断8皇后是否能互相攻击
-
分析:
- 同行,同列,同对角线
- 同对角线:横纵坐标之差,之和相同
-
遇到的问题:
#include<cstdio>
using namespace std;
struct Point{
int x,y;
}p[10];
int check(int a,int b){
if(p[a].x == p[b].x) return 1;
if(p[a].y == p[b].y) return 1;
if(p[a].x - p[a].y == p[b].x - p[b].y) return 1;
if(p[a].x + p[a].y == p[b].x + p[b].y) return 1;
return 0;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
char str[10];
for(int i = 0 ; i < 8 ; ++i){
scanf("%s",str);
p[i].x = str[0] - ‘A‘;
p[i].y = str[1] - ‘0‘;
}
int flg = 1;
for(int i = 0 ; flg && i < 8 ; ++i){
for(int j = i + 1 ;flg && j < 8 ; ++j){
if(check(i,j)){
flg = 0;
}
}
}
puts(flg ? "Valid" : "Invalid");
}
return 0;
}
时间: 2024-07-30 10:43:39