时间: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;}