题目大意:
同2993、 这题是根据棋盘,分别输出棋子的位置。
解题思路:
模拟再模拟、我写了8000+B 你能信?我是多有耐心呢!
代码:
1 #include <algorithm>
2 #include <iostream>
3 #include <sstream>
4 #include <cstdlib>
5 #include <cstring>
6 #include <cstdio>
7 #include <string>
8 #include <bitset>
9 #include <vector>
10 #include <queue>
11 #include <stack>
12 #include <cmath>
13 #include <list>
14 #include <map>
15 #include <set>
16 using namespace std;
17 /***************************************/
18 #define ll long long
19 #define int64 __int64
20 /***************************************/
21 const int INF = 0x7f7f7f7f;
22 const double eps = 1e-8;
23 const double PIE=acos(-1.0);
24 const int dx[]= {0,-1,0,1};
25 const int dy[]= {1,0,-1,0};
26 const int fx[]= {-1,-1,-1,0,0,1,1,1};
27 const int fy[]= {-1,0,1,-1,1,-1,0,1};
28 /***************************************/
29 void openfile()
30 {
31 freopen("data.in","rb",stdin);
32 freopen("data.out","wb",stdout);
33 }
34 /**********************华丽丽的分割线,以上为模板部分*****************/
35
36 int main()
37 {
38 /* char board[18][35]=
39 {
40 "",
41 " +---+---+---+---+---+---+---+---+",
42 " |:::|...|:::|...|:::|...|:::|...|",
43 " +---+---+---+---+---+---+---+---+",
44 " |...|:::|...|:::|...|:::|...|:::|",
45 " +---+---+---+---+---+---+---+---+",
46 " |:::|...|:::|...|:::|...|:::|...|",
47 " +---+---+---+---+---+---+---+---+",
48 " |...|:::|...|:::|...|:::|...|:::|",
49 " +---+---+---+---+---+---+---+---+",
50 " |:::|...|:::|...|:::|...|:::|...|",
51 " +---+---+---+---+---+---+---+---+",
52 " |...|:::|...|:::|...|:::|...|:::|",
53 " +---+---+---+---+---+---+---+---+",
54 " |:::|...|:::|...|:::|...|:::|...|",
55 " +---+---+---+---+---+---+---+---+",
56 " |...|:::|...|:::|...|:::|...|:::|",
57 " +---+---+---+---+---+---+---+---+"
58 }; */
59 char board[18][35];
60 memset(board,0,sizeof(board));
61 int i,j;
62 int num1=0,num2=0;
63 int numK=0,numQ=0,numR=0,numB=0,numP=0,numN=0;
64 int numk=0,numq=0,numr=0,numb=0,nump=0,numn=0;
65 for(i=17; i>0; i--)
66 {
67 for(j=1; j<=33; j++)
68 {
69 scanf("%c",&board[i][j]);
70 if (board[i][j]==‘K‘)
71 numK++;
72 if (board[i][j]==‘Q‘)
73 numQ++;
74 if (board[i][j]==‘R‘)
75 numR++;
76 if (board[i][j]==‘P‘)
77 numP++;
78 if (board[i][j]==‘N‘)
79 numN++;
80 if (board[i][j]==‘k‘)
81 numk++;
82 if (board[i][j]==‘q‘)
83 numq++;
84 if (board[i][j]==‘r‘)
85 numr++;
86 if (board[i][j]==‘p‘)
87 nump++;
88 if (board[i][j]==‘n‘)
89 numn++;
90 if (board[i][j]==‘B‘)
91 numB++;
92 if (board[i][j]==‘b‘)
93 numb++;
94 if (board[i][j]>=‘A‘&&board[i][j]<=‘Z‘)
95 num1++;
96 if (board[i][j]>=‘a‘&&board[i][j]<=‘z‘)
97 num2++;
98 }
99 getchar();
100 }
101 int k;
102 int ce;
103 char x,y;
104 int K=0,Q=0,R=0,B=0,N=0,P=0;
105 printf("White: ");
106 for(i=1; i<=num1; i++)
107 for(j=1; j<=17; j++)
108 {
109 ce=1;
110 for(k=1; k<=33; k++)
111 {
112 if (board[j][k]==‘K‘)
113 {
114 x=j/2+‘0‘;
115 y=(k-3)/4+‘a‘;
116 K++;
117 ce=0;
118
119 printf("%c%c%c,",board[j][k],y,x);
120 board[j][k]=‘.‘;
121 break;
122 }
123 if (board[j][k]==‘Q‘&&K==numK)
124 {
125 x=j/2+‘0‘;
126 y=(k-3)/4+‘a‘;
127 Q++;
128 ce=0;
129 printf("%c%c%c,",board[j][k],y,x);
130 board[j][k]=‘.‘;
131 break;
132 }
133 if (board[j][k]==‘R‘&&Q==numQ)
134 {
135 x=j/2+‘0‘;
136 y=(k-3)/4+‘a‘;
137 R++;
138 ce=0;
139
140 printf("%c%c%c,",board[j][k],y,x);
141 board[j][k]=‘.‘;
142 break;
143 }
144 if (board[j][k]==‘B‘&&R==numR)
145 {
146 x=j/2+‘0‘;
147 y=(k-3)/4+‘a‘;
148 B++;
149 ce=0;
150
151 printf("%c%c%c,",board[j][k],y,x);
152 board[j][k]=‘.‘;
153 break;
154 }
155 if (board[j][k]==‘N‘&&B==numB)
156 {
157 x=j/2+‘0‘;
158 y=(k-3)/4+‘a‘;
159 N++;
160 ce=0;
161
162 printf("%c%c%c,",board[j][k],y,x);
163 board[j][k]=‘.‘;
164 break;
165 }
166 if (board[j][k]==‘P‘&&N==numN)
167 {
168 x=j/2+‘0‘;
169 y=(k-3)/4+‘a‘;
170 ce=0;
171 P++;
172 if (P<numP)
173 printf("%c%c,",y,x);
174 else
175 printf("%c%c\n",y,x);
176 board[j][k]=‘.‘;
177 break;
178 }
179 }
180 if (!ce)
181 break;
182 }
183 int k1=0,q=0,r=0,b=0,n=0,p=0;
184 printf("Black: ");
185 for(i=1; i<=num2; i++)
186 for(j=17; j>=1; j--)
187 {
188 ce=1;
189 for(k=1; k<=33; k++)
190 {
191 if (board[j][k]==‘k‘)
192 {
193 x=j/2+‘0‘;
194 y=(k-3)/4+‘a‘;
195 k1++;
196 ce=0;
197
198 printf("%c%c%c,",board[j][k]-32,y,x);
199 board[j][k]=‘.‘;
200 break;
201 }
202 if (board[j][k]==‘q‘&&k1==numk)
203 {
204 x=j/2+‘0‘;
205 y=(k-3)/4+‘a‘;
206 q++;
207 ce=0;
208
209 printf("%c%c%c,",board[j][k]-32,y,x);
210 board[j][k]=‘.‘;
211 break;
212 }
213 if (board[j][k]==‘r‘&&q==numq)
214 {
215 x=j/2+‘0‘;
216 y=(k-3)/4+‘a‘;
217 r++;
218 ce=0;
219
220 printf("%c%c%c,",board[j][k]-32,y,x);
221 board[j][k]=‘.‘;
222 break;
223 }
224 if (board[j][k]==‘b‘&&r==numr)
225 {
226 x=j/2+‘0‘;
227 y=(k-3)/4+‘a‘;
228 b++;
229 ce=0;
230
231 printf("%c%c%c,",board[j][k]-32,y,x);
232 board[j][k]=‘.‘;
233 break;
234 }
235 if (board[j][k]==‘n‘&&b==numb)
236 {
237 x=j/2+‘0‘;
238 y=(k-3)/4+‘a‘;
239 n++;
240 ce=0;
241
242 printf("%c%c%c,",board[j][k]-32,y,x);
243 board[j][k]=‘.‘;
244 break;
245 }
246 if (board[j][k]==‘p‘&&n==numn)
247 {
248 x=j/2+‘0‘;
249 y=(k-3)/4+‘a‘;
250 ce=0;
251 p++;
252 if (p<nump)
253 printf("%c%c,",y,x);
254 else
255 printf("%c%c\n",y,x);
256 board[j][k]=‘.‘;
257 break;
258 }
259 }
260 if (!ce)
261 break;
262 }
263 return 0;
264 }
265 /*
266 "+---+---+---+---+---+---+---+---+",
267 "|:::|...|:::|...|:::|...|:::|...|",
268 "+---+---+---+---+---+---+---+---+",
269 "|...|:::|...|:::|...|:::|...|:::|",
270 "+---+---+---+---+---+---+---+---+",
271 "|:::|...|:::|...|:::|...|:::|...|",
272 "+---+---+---+---+---+---+---+---+",
273 "|...|:::|...|:::|...|:::|...|:::|",
274 "+---+---+---+---+---+---+---+---+",
275 "|:::|...|:::|...|:::|...|:::|...|",
276 "+---+---+---+---+---+---+---+---+",
277 "|...|:::|...|:::|...|:::|...|:::|",
278 "+---+---+---+---+---+---+---+---+",
279 "|:::|...|:::|...|:::|...|:::|...|",
280 "+---+---+---+---+---+---+---+---+",
281 "|...|:::|...|:::|...|:::|...|:::|",
282 "+---+---+---+---+---+---+---+---+",
283 */
时间: 2024-10-13 21:13:09