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 }

时间: 2024-10-01 02:41:46

POJ2996 Help Me with the Game 大模拟的相关文章

AC日记——神奇的幻方 洛谷 P2615(大模拟)

题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. 之后,按如下方式从小到大依次填写每个数K(K=2,3,…,N*N): 1.若(K−1)在第一行但不在最后一列,则将K填在最后一行,(K−1)所在列的右一列: 2.若(K−1)在最后一列但不在第一行,则将K填在第一列,(K−1)所在行的上一行: 3.若(K−1)在第一行最后一列,则将K填在(K−1)

URAL 1715. Another Ball Killer (大模拟)

1715. Another Ball Killer Time limit: 2.0 second Memory limit: 64 MB Contestants often wonder what jury members do during a contest. Someone thinks that they spend all the contest fixing bugs in tests. Others say that the jury members watch the conte

POJ 1835 大模拟

宇航员 #include<iostream> #include<cstdio> #include<string> #include<cstring> #define maxn 10010 using namespace std; int a[7],temp[7]; char str[10]; void solve(int str2[],int str3[]) { if(strcmp(str,"forward")==0)//方向不变 { s

大模拟祭

考试的前一天晚上我还在和$letong$说,我以后晚上再颓就去打模拟,然后就考了个大模拟 我比较$sb$,各种情况全分开了,没怎么压行,打了$1000$行整,$30$多$k$,妈妈再也不怕我打不出来猪国杀了 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 int n,len,Std; 6 int b[5]; 7 char s[20],ss[20];

2017&quot;百度之星&quot;程序设计大赛 - 复赛1001&amp;&amp;HDU 6144 Arithmetic of Bomb【java大模拟】

Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 129    Accepted Submission(s): 94 Problem Description 众所周知,度度熊非常喜欢数字. 它最近在学习小学算术,第一次发现这个世界上居然存在两位数,三位数……甚至N位数! 但是这回的算术题可并不简单,由于

UVALive 4222 /HDU 2961 Dance 大模拟

Dance Problem Description For a dance to be proper in the Altered Culture of Machinema, it must abide by the following rules: 1. A dip can only appear 1 or 2 steps after a jiggle, or before a twirl, as in:* ...jiggle dip...* ...jiggle stomp dip...* .

UVA 1596 Bug Hunt (大模拟 栈)

题意: 输入并模拟执行一段程序,输出第一个bug所在的行. 每行程序有两种可能: 数组定义: 格式为arr[size]. 例如a[10]或者b[5],可用下标分别是0-9和0-4.定义之后所有元素均为未初始化状态. 赋值语句: 格式为arr[index]=value. 或者arr[index] = arr[arr[index]]. 例如a[0]=3或者a[a[0]]=a[1]. 赋值语句和数组定义可能会出现两种bug: 下标index越界: 使用未初始化的变量(index和value都可 能出现

大模拟

工具人的自觉 尽量在对的前提下加快速度吧 也稍微总结下容易粗心的地方,慢慢补 计蒜客T42401 ($Poker\ Game$,$2019ICPC$南京) 一些调试中发现的错误: 1. 把第一次翻开的community card数量当成$2$(应该为$3$)→ 进而影响第$3,4$人在flop-betting时的正确性 2. 一开始没注意到只剩一人时就胜出 → 需要在每一轮都判断 3. 没注意到发牌可以不全发完 4. 看错第$1$人在flop-betting中call的条件 5. Three o

poj--2706--Connect(极限大模拟)

Connect Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1148   Accepted: 375 Description Figure 1 Figure 2 Figure 3a Figure 3b Figure 4 Your task is to decide if a specified sequence of moves in the board game Twixt ends with a winning m