栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 4001 Xiangqi

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 4001 Xiangqi

#include<stdio.h>#include<string.h>bool vis[11][11];int dir[4][2] = {1, 0, -1, 0, 0, -1, 0, 1};int d[8][2] = {2, 1, 2, -1, -2, 1, -2, -1, 1, 2, 1, -2, -1, 2, -1, -2};int dd[8][2] = {1, 0, 1, 0, -1, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, -1};int main(){    int x[8], y[8], kind[8], xx, yy;    int i, j, u;    char buf[5];    int n;    while( ~scanf("%d%d%d", &n, &xx, &yy))    {        if(!n && !xx && !yy) break;        memset(vis, 0, sizeof(vis));        for(i = 0; i < n; i++)        { scanf("%s%d%d",buf, &x[i], &y[i]); if(buf[0] == 'G') kind[i] = 0, u = i; if(buf[0] == 'R') kind[i] = 1; if(buf[0] == 'H') kind[i] = 2; if(buf[0] == 'C') kind[i] = 3; vis[x[i]][y[i]] = 1;        }        if(u != 0)        { int tmp; tmp = kind[u]; kind[u] = kind[0]; kind[0] = tmp; tmp = x[u]; x[u] = x[0]; x[0] = tmp; tmp = y[u]; y[u] = y[0]; y[0] = tmp;        }        if(y[0] == yy)        { for(i = xx + 1; i < x[0] && !vis[i][yy]; i++); if(i == x[0]) {puts("NO"); continue;}        }        bool ok = 0, flag;        for(i = 0; i < 4; i++)        { int fx = xx + dir[i][0]; int fy = yy + dir[i][1]; if(fx < 1 || fx > 3 || fy < 4 || fy > 6)     continue; flag = 0; for(j = 0; j < n; j++) {     if(fx == x[j] && fy == y[j]) continue;     if(kind[j] == 0)     {         if(y[j] == fy)         {  for(u = fx + 1; u < x[j] && !vis[u][fy]; u++);  if(u == x[j]) { flag = 1; break; }         }     }     if(kind[j] == 1)     {         if(y[j] == fy)         {  if(fx < x[j])  {      for(u = fx + 1; u < x[j] && ! vis[u][fy]; u++);      if(u == x[j]){ flag = 1; break; }  }  else  {      for(u = x[j] + 1; u < fx && !vis[u][fy]; u++);      if(u == fx) { flag = 1; break; }  }         }         if(x[j] == fx)         {  if(y[j] < fy)  {      for(u = y[j] + 1; u < fy && !vis[fx][u]; u++);      if(u == fy) { flag = 1; break; }  }  else  {      for(u = fy + 1; u < y[j] && !vis[fx][u]; u++);      if(u == y[j]) { flag = 1; break; }  }         }     }     if(kind[j] == 2)     {         for(u = 0; u < 8; u++)         {  int dx = x[j] + d[u][0];  int dy = y[j] + d[u][1];  if(dx <= 0 || dx > 10 || dy <= 0 || dy > 9) continue;  int ddx = x[j] + dd[u][0];  int ddy = y[j] + dd[u][1];  if(vis[ddx][ddy]) continue;  if(dx == fx && dy == fy) {flag = 1; break;}         }         if(flag) break;     }     if(kind[j] == 3)     {         int cnt = 0;         if(x[j] == fx)         {  if(y[j] < fy)  {      for(u = y[j] + 1; u < fy; u++)          if(vis[fx][u]) cnt++;      if(cnt == 1) {flag = 1; break;}  }  else  {      for(u = fy + 1; u < y[j]; u++)          if(vis[fx][u]) cnt++;      if(cnt == 1) {flag = 1; break;}  }         }         if(y[j] == fy)         {  if(x[j] < fx)  {      for(u = x[j] + 1; u < fx; u++)          if(vis[u][fy]) cnt++;      if(cnt == 1) {flag = 1; break;}  }  else  {      for(u = fx + 1; u < x[j]; u++)          if(vis[u][fy]) cnt++;      if(cnt == 1) {flag = 1; break;}  }         }     }     if(flag) break; } if(flag) continue; else { puts("NO"); ok = 1; break; }        }        if(!ok) puts("YES");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378998.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号