POJ2996 Help Me with the Game 大模拟

http://blog.csdn.net/AXuan_K/article/details/37922039

题意:给定一个棋盘,输出个个棋子的位置。行数字表示,列字母表示。

注意:1、大写字母表示白色,小写字母表示黑色,表中的标点并没什么卵用。

2、该棋盘的排序和矩阵的行相反,即矩阵最后一行为棋盘第一行。

3、白棋按照行和列的升序排列。

4、黑棋行按照行降序排列,列升序排序。

5、最后的输出不带标点,列的字母为大写。

思路:数组存储棋子的类型,白棋按照从最后一行到第一行开始扫,黑棋按照从第一行到最后一行扫。如果存在棋子,输出其位置。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 char a[6]={'K','Q','R','B','N','P'};
 7 char b[6]={'k','q','r','b','n','p'};
 8 char map[40][40];
 9 main()
10 {
11     int i,j,s1=0,s2=0,k;
12     for(i=1;i<=17;i++)
13     {
14         for(j=1;j<=33;j++)
15         {
16             cin>>map[i][j];
17             if(map[i][j]=='P')
18             s1++;
19             if(map[i][j]=='p')
20             s2++;
21         }
22     }
23     printf("White: ");
24     for(k=0;k<6;k++)
25     {
26         for(i=17;i>=1;i--)
27         {
28             for(j=1;j<=33;j++)
29             {
30                 if(k<=4&&i%2==0&&j%4==3)
31                 {
32                     if(map[i][j]==a[k])
33                     {
34                         printf("%c%c%d,",a[k],'a'+(j+1)/4-1,9-i/2);
35                     }
36                 }
37                 if(k==5&&i%2==0&&j%4==3)
38                 {
39                     if(map[i][j]==a[k])
40                     {
41                         s1--;
42                         if(s1==0)
43                         printf("%c%d\n",'a'+(j+1)/4-1,9-i/2);
44                         else
45                         printf("%c%d,",'a'+(j+1)/4-1,9-i/2);
46                     }
47                 }
48             }
49         }
50     }
51     printf("Black: ");
52         for(k=0;k<6;k++)
53     {
54         for(i=1;i<=17;i++)
55         {
56             for(j=1;j<=33;j++)
57             {
58                 if(k<=4&&i%2==0&&j%4==3)
59                 {
60                     if(map[i][j]==b[k])
61                     {
62                         printf("%c%c%d,",a[k],'a'+(j+1)/4-1,9-i/2);
63                     }
64                 }
65                 if(k==5&&i%2==0&&j%4==3)
66                 {
67                     if(map[i][j]==b[k])
68                     {
69                         s2--;
70                         if(s2==0)
71                         printf("%c%d\n",'a'+(j+1)/4-1,9-i/2);
72                         else
73                         printf("%c%d,",'a'+(j+1)/4-1,9-i/2);
74                     }
75                 }
76             }
77         }
78     }
79 }
View Code

 

posted @ 2016-07-20 16:46  Crazy、baby  阅读(145)  评论(0编辑  收藏  举报