首页 > 代码库 > poj2996(Help Me with the Game)

poj2996(Help Me with the Game)

题目大意:

    同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 */
View Code