- 1#include 2#include 3#include 4#include 5#include 6 7 using namespace std;
- 8 int a[11][10];
- 9 int Map[11][10]; //如果不考虑黑将吃子的话这个用不到。
- 10 int book[11][10];
- 11 int p,
- q;
- 12 struct chess 13 {
- 14 char ch;
- 15 int r,
- c;
- 16
- };
- 17 struct chess che[101];
- 18 19 int judge(int r, int c) 20 {
- 21 int flag = 0,
- i,
- j;
- 22 int next[4][2] = {
- {
- 1,
- 0
- },
- { - 1,
- 0
- },
- {
- 0,
- -1
- },
- {
- 0,
- 1
- }
- };
- 23 int nextx,
- nexty;
- 24
- for (i = 0; i < 4; i++) 25 {
- 26 nextx = r + next[i][0];
- 27 nexty = c + next[i][1];
- 28
- if (nextx > 3 || nextx < 1 || nexty > 6 || nexty < 4) 29
- continue;
- 30
- if (a[nextx][nexty] == 0) 31 flag = 1;
- 32
- }
- 33
- if (flag) 34
- return 0;
- 35
- else 36
- return 1;
- 37
- }
- 38 void kill(char ch, int r, int c) 39 {
- 40 int i,
- j;
- 41
- if (ch == 'R') 42 {
- 43
- for (i = r - 1; i > 0; i--) 44 {
- 45
- if (book[i][c]) 46 {
- 47 a[i][c]++;
- 48
- break;
- 49
- }
- 50
- else 51 a[i][c]++;
- 52
- }
- 53
- for (i = r + 1; i <= 10; i++) 54 {
- 55
- if (book[i][c]) 56 {
- 57 a[i][c]++;
- 58
- break;
- 59
- }
- 60
- else 61 a[i][c]++;
- 62
- }
- 63
- for (i = c + 1; i <= 10; i++) 64 {
- 65
- if (book[r][i]) 66 {
- 67 a[r][i]++;
- 68
- break;
- 69
- }
- 70
- else 71 a[r][i]++;
- 72
- }
- 73
- for (i = c - 1; i > 0; i--) 74 {
- 75
- if (book[r][i]) 76 {
- 77 a[r][i]++;
- 78
- break;
- 79
- }
- 80
- else 81 a[r][i]++;
- 82
- }
- 83
- }
- 84
- else if (ch == 'H') 85 {
- 86 int next[4][2] = {
- {
- 1,
- 0
- },
- { - 1,
- 0
- },
- {
- 0,
- -1
- },
- {
- 0,
- 1
- }
- };
- 87
- for (i = 0; i < 4; i++) 88 {
- 89
- if (i <= 1) 90 {
- 91
- if (r + 2 * next[i][0] < 1 || r + 2 * next[i][0] > 10 || r + next[i][0] < 1 || r + next[i][0] > 10 92 || c + next[i][1] + 1 < 1 || c + next[i][1] + 1 > 9 || c + next[i][1] < 1 || c + next[i][1] > 9) 93
- continue;
- 94
- if (!book[r + next[i][0]][c + next[i][1]]) 95 {
- 96 a[r + 2 * next[i][0]][c + next[i][1] + 1]++;
- 97 a[r + 2 * next[i][0]][c + next[i][1] - 1]++;
- 98
- }
- 99
- }
- 100
- else 101 {
- 102
- if (r + next[i][0] < 1 || r + next[i][0] > 10 || r + next[i][0] + 1 < 1 || r + next[i][0] + 1 > 10 103 || c + next[i][1] < 1 || c + next[i][1] > 9 || c + 2 * next[i][1] < 1 || c + 2 * next[i][1] > 9) 104
- continue;
- 105
- if (!book[r + next[i][0]][c + next[i][1]]) 106 {
- 107 a[r + next[i][0] + 1][c + 2 * next[i][1]]++;
- 108 a[r + next[i][0] - 1][c + 2 * next[i][1]]++;
- 109
- }
- 110
- }
- 111
- }
- 112
- }
- 113
- else if (ch == 'C') 114 {
- 115 int flag = 0;
- 116
- for (i = r - 1; i >= 1; i--) 117 {
- 118
- if (flag == 2) break;
- 119
- if (flag == 1) 120 {
- 121 a[i][c]++;
- 122
- }
- 123
- if (book[i][c]) 124 flag++;
- 125
- }
- 126 flag = 0;
- 127
- for (i = r + 1; i <= 10; i++) 128 {
- 129
- if (flag == 2) break;
- 130
- if (flag == 1) 131 {
- 132 a[i][c]++;
- 133
- }
- 134
- if (book[i][c]) 135 flag++;
- 136
- }
- 137 flag = 0;
- 138
- for (i = c + 1; i <= 10; i++) 139 {
- 140
- if (flag == 2) break;
- 141
- if (flag == 1) 142 {
- 143 a[r][i]++;
- 144
- }
- 145
- if (book[r][i]) 146 flag++;
- 147
- }
- 148 flag = 0;
- 149
- for (i = c - 1; i > 0; i--) 150 {
- 151
- if (flag == 2) break;
- 152
- if (flag == 1) 153 {
- 154 a[r][i]++;
- 155
- }
- 156
- if (book[r][i]) 157 flag++;
- 158
- }
- 159
- }
- 160
- else if (ch == 'G') 161 {
- 162 int flag = 0;
- 163
- for (i = r - 1; i > p; i--) 164 {
- 165
- if (book[i][c]) 166 flag = 1;
- 167
- }
- 168
- if (!flag) 169 {
- 170
- for (i = p; i <= 3; i++) 171 a[i][c]++;
- 172
- }
- 173
- }
- 174
- }
- 175 int main() 176 {
- 177 int n,
- i,
- j,
- k;
- 178
- while (cin >> n >> p >> q && n && p && q) 179 {
- 180
- for (i = 0; i) 181 {
- 182 cin >> che[i].ch >> che[i].r >> che[i].c;
- 183 book[che[i].r][che[i].c] = 1;
- 184
- }
- 185
- for (i = 0; i) 186 kill(che[i].ch, che[i].r, che[i].c);
- 187
- if (judge(p, q)) 188 cout << "YES" << endl;
- 189
- else 190 cout << "NO" << endl;
- 191 memset(a, 0, sizeof(a));
- 192 memset(book, 0, sizeof(book));
- 193
- }
- 194
- return 0;
- 195
- }
来源: