[2016-04-17][Gym][100947][B][Queens, Again!!]

  • 时间:2016-04-17 16:20:49 星期日

  • 题目编号:[2016-04-17][Gym][100947][B][Queens, Again!!]

  • 题目大意:8皇后问题,给出8皇后的位置,判断8皇后是否能互相攻击

  • 分析:

    • 同行,同列,同对角线
    • 同对角线:横纵坐标之差,之和相同
  • 遇到的问题:

  1. #include<cstdio>
  2. using namespace std;
  3. struct Point{
  4. int x,y;
  5. }p[10];
  6. int check(int a,int b){
  7. if(p[a].x == p[b].x) return 1;
  8. if(p[a].y == p[b].y) return 1;
  9. if(p[a].x - p[a].y == p[b].x - p[b].y) return 1;
  10. if(p[a].x + p[a].y == p[b].x + p[b].y) return 1;
  11. return 0;
  12. }
  13. int main(){
  14. int t;
  15. scanf("%d",&t);
  16. while(t--){
  17. char str[10];
  18. for(int i = 0 ; i < 8 ; ++i){
  19. scanf("%s",str);
  20. p[i].x = str[0] - 'A';
  21. p[i].y = str[1] - '0';
  22. }
  23. int flg = 1;
  24. for(int i = 0 ; flg && i < 8 ; ++i){
  25. for(int j = i + 1 ;flg && j < 8 ; ++j){
  26. if(check(i,j)){
  27. flg = 0;
  28. }
  29. }
  30. }
  31. puts(flg ? "Valid" : "Invalid");
  32. }
  33. return 0;
  34. }


来自为知笔记(Wiz)


posted on 2016-04-17 16:35  红洋  阅读(202)  评论(0)    收藏  举报

导航