POJ 2996:Help Me with the Game
| Time Limit: 1000MS | Memory Limit: 65536KB | 64bit IO Format: %I64d & %I64u |
Description
Input
"K" (King), "Q" (Queen), "R" (Rook), "B" (Bishop), "N" (Knight), or "P" (Pawn). The chessboard outline is made of plus ("+"), minus ("-"), and pipe ("|") characters. The black fields are filled with colons (":"), white fields with dots (".").
Output
pieces of the black player.
The description of the position of the pieces is a comma-separated list of terms describing the pieces of the appropriate player. The description of a piece consists of a single upper-case letter that denotes the type of the piece (except for pawns, for that
this identifier is omitted). This letter is immediatelly followed by the position of the piece in the standard chess notation -- a lower-case letter between "a" and "h" that determines the column ("a" is the leftmost column in the input) and a single digit
between 1 and 8 that determines the row (8 is the first row in the input).
The pieces in the description must appear in the following order: King("K"), Queens ("Q"), Rooks ("R"), Bishops ("B"), Knights ("N"), and pawns. Note that the numbers of pieces may differ from the initial position because of capturing the pieces and the promotions
of pawns. In case two pieces of the same type appear in the input, the piece with the smaller row number must be described before the other one if the pieces are white, and the one with the larger row number must be described first if the pieces are black.
If two pieces of the same type appear in the same row, the one with the smaller column letter must appear first.
Sample Input
+---+---+---+---+---+---+---+---+
|.r.|:::|.b.|:q:|.k.|:::|.n.|:r:|
+---+---+---+---+---+---+---+---+
|:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.|
+---+---+---+---+---+---+---+---+
|...|:::|.n.|:::|...|:::|...|:p:|
+---+---+---+---+---+---+---+---+
|:::|...|:::|...|:::|...|:::|...|
+---+---+---+---+---+---+---+---+
|...|:::|...|:::|.P.|:::|...|:::|
+---+---+---+---+---+---+---+---+
|:P:|...|:::|...|:::|...|:::|...|
+---+---+---+---+---+---+---+---+
|.P.|:::|.P.|:P:|...|:P:|.P.|:P:|
+---+---+---+---+---+---+---+---+
|:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.|
+---+---+---+---+---+---+---+---+
Sample Output
White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4
Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6
给了一个固定大小的棋盘,要求输出黑白棋子的位置,本身题目不是很难,这种题目恶心在于要注意的地方很多:
1.白棋子是大写字母,黑棋子是小写字母。
2.棋盘的列是从左边开始是a一直到h,行驶从下面开始算1到上面的8。
3.白棋子输出是按照字母优先顺序,黑棋子输出是按照数字优先顺序。
4.本来到这里已经很恶心了,结果还有更奸诈的。。。那就是棋盘上的棋子数量是不固定的,不一定非得是这32个棋子,也是因为这个原因WA了一次。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; char k_c[70],q_c[70],r_c[70],b_c[70],n_c[70],p_c[70],K_c[70],Q_c[70],R_c[70],B_c[70],N_c[70],P_c[70]; int k_y[70],q_y[70],r_y[70],b_y[70],n_y[70],p_y[70],K_y[70],Q_y[70],R_y[70],B_y[70],N_y[70],P_y[70]; string temp,test[20];
int i,j,flag;
int k_num,q_num,r_num,b_num,n_num,p_num,K_num,Q_num,R_num,B_num,N_num,P_num; int main()
{
//freopen("i.txt","r",stdin);
//freopen("o.txt","w",stdout); k_num=1;q_num=1;r_num=1;b_num=1;n_num=1;p_num=1;K_num=1;Q_num=1;R_num=1;B_num=1;N_num=1;P_num=1; cin>>temp;
for(i=1;i<=8;i++)
{
cin>>test[i];
cin>>temp; for(j=2;j<=30;j=j+4)
{
if(test[i][j]=='r')
{
r_c[r_num]='a'+(j/4);
r_y[r_num]=9-i;
r_num++;
}
else if(test[i][j]=='b')
{
b_c[b_num]='a'+(j/4);
b_y[b_num]=9-i;
b_num++;
}
else if(test[i][j]=='k')
{
k_c[k_num]='a'+(j/4);
k_y[k_num]=9-i;
k_num++;
}
else if(test[i][j]=='q')
{
q_c[q_num]='a'+(j/4);
q_y[q_num]=9-i;
q_num++;
}
else if(test[i][j]=='n')
{
n_c[n_num]='a'+(j/4);
n_y[n_num]=9-i;
n_num++;
}
else if(test[i][j]=='p')
{
p_c[p_num]='a'+(j/4);
p_y[p_num]=9-i;
p_num++;
}
}
}
for(i=8;i>=1;i--)
{
for(j=2;j<=30;j=j+4)
{
if(test[i][j]=='R')
{
R_c[R_num]='a'+(j/4);
R_y[R_num]=9-i;
R_num++;
}
else if(test[i][j]=='B')
{
B_c[B_num]='a'+(j/4);
B_y[B_num]=9-i;
B_num++;
}
else if(test[i][j]=='K')
{
K_c[K_num]='a'+(j/4);
K_y[K_num]=9-i;
K_num++;
}
else if(test[i][j]=='Q')
{
Q_c[Q_num]='a'+(j/4);
Q_y[Q_num]=9-i;
Q_num++;
}
else if(test[i][j]=='N')
{
N_c[N_num]='a'+(j/4);
N_y[N_num]=9-i;
N_num++;
}
else if(test[i][j]=='P')
{
P_c[P_num]='a'+(j/4);
P_y[P_num]=9-i;
P_num++;
}
}
} flag=1;
cout<<"White: ";
for(i=1;i<K_num;i++)
{
if(flag)
{
flag=0;
cout<<"K"<<K_c[i]<<K_y[i];
}
else
{
cout<<",K"<<K_c[i]<<K_y[i];
}
}
for(i=1;i<Q_num;i++)
{
if(flag)
{
flag=0;
cout<<"Q"<<Q_c[i]<<Q_y[i];
}
else
{
cout<<",Q"<<Q_c[i]<<Q_y[i];
}
}
for(i=1;i<R_num;i++)
{
if(flag)
{
flag=0;
cout<<"R"<<R_c[i]<<R_y[i];
}
else
{
cout<<",R"<<R_c[i]<<R_y[i];
}
}
for(i=1;i<B_num;i++)
{
if(flag)
{
flag=0;
cout<<"B"<<B_c[i]<<B_y[i];
}
else
{
cout<<",B"<<B_c[i]<<B_y[i];
}
}
for(i=1;i<N_num;i++)
{
if(flag)
{
flag=0;
cout<<"N"<<N_c[i]<<N_y[i];
}
else
{
cout<<",N"<<N_c[i]<<N_y[i];
}
}
for(i=1;i<P_num;i++)
{
if(flag)
{
flag=0;
cout<<P_c[i]<<P_y[i];
}
else
{
cout<<","<<P_c[i]<<P_y[i];
}
}
cout<<endl; flag=1;
cout<<"Black: ";
for(i=1;i<k_num;i++)
{
if(flag)
{
flag=0;
cout<<"K"<<k_c[i]<<k_y[i];
}
else
{
cout<<",K"<<k_c[i]<<k_y[i];
}
}
for(i=1;i<q_num;i++)
{
if(flag)
{
flag=0;
cout<<"Q"<<q_c[i]<<q_y[i];
}
else
{
cout<<",Q"<<q_c[i]<<q_y[i];
}
}
for(i=1;i<r_num;i++)
{
if(flag)
{
flag=0;
cout<<"R"<<r_c[i]<<r_y[i];
}
else
{
cout<<",R"<<r_c[i]<<r_y[i];
}
}
for(i=1;i<b_num;i++)
{
if(flag)
{
flag=0;
cout<<"B"<<b_c[i]<<b_y[i];
}
else
{
cout<<",B"<<b_c[i]<<b_y[i];
}
}
for(i=1;i<n_num;i++)
{
if(flag)
{
flag=0;
cout<<"N"<<n_c[i]<<n_y[i];
}
else
{
cout<<",N"<<n_c[i]<<n_y[i];
}
}
for(i=1;i<p_num;i++)
{
if(flag)
{
flag=0;
cout<<p_c[i]<<p_y[i];
}
else
{
cout<<","<<p_c[i]<<p_y[i];
}
}
cout<<endl; return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
POJ 2996:Help Me with the Game的更多相关文章
- 模拟 POJ 2996 Help Me with the Game
题目地址:http://poj.org/problem?id=2996 /* 题意:给出白方和黑方的棋子和对应的坐标,输出该副棋盘的样子 模拟题 + 结构体排序:无算法,switch区分读入的字符,按 ...
- POJ 3321:Apple Tree + HDU 3887:Counting Offspring(DFS序+树状数组)
http://poj.org/problem?id=3321 http://acm.hdu.edu.cn/showproblem.php?pid=3887 POJ 3321: 题意:给出一棵根节点为1 ...
- POJ 3252:Round Numbers
POJ 3252:Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10099 Accepted: 36 ...
- poj 2996 Help Me with the Game(模拟)
题目:http://poj.org/problem?id=2996 题意:给出 棋盘 情况 输出 白棋 和 黑棋在 棋盘上的 白棋为大写字母 黑棋为小写字母 棋盘 左下点为原点(1,a) 输出 是 按 ...
- POJ 1459:Power Network(最大流)
http://poj.org/problem?id=1459 题意:有np个发电站,nc个消费者,m条边,边有容量限制,发电站有产能上限,消费者有需求上限问最大流量. 思路:S和发电站相连,边权是产能 ...
- POJ 3436:ACM Computer Factory(最大流记录路径)
http://poj.org/problem?id=3436 题意:题意很难懂.给出P N.接下来N行代表N个机器,每一行有2*P+1个数字 第一个数代表容量,第2~P+1个数代表输入,第P+2到2* ...
- POJ 2195:Going Home(最小费用最大流)
http://poj.org/problem?id=2195 题意:有一个地图里面有N个人和N个家,每走一格的花费是1,问让这N个人分别到这N个家的最小花费是多少. 思路:通过这个题目学了最小费用最大 ...
- POJ 3281:Dining(最大流)
http://poj.org/problem?id=3281 题意:有n头牛,f种食物,d种饮料,每头牛有fnum种喜欢的食物,dnum种喜欢的饮料,每种食物如果给一头牛吃了,那么另一个牛就不能吃这种 ...
- POJ 3580:SuperMemo(Splay)
http://poj.org/problem?id=3580 题意:有6种操作,其中有两种之前没做过,就是Revolve操作和Min操作.Revolve一开始想着一个一个删一个一个插,觉得太暴力了,后 ...
随机推荐
- JS动态获取 Url 参数
此操作主要用于动态 ajax 请求 1.首先封装一个函数 GetRequest(),能动态获取到 url 问号"?"后的所有参数 , function GetRequest() { ...
- 小程序view标签靠右方法
第一种:不浮动靠右 text-align:right; 第二种:浮动靠右 float:right;
- Linux双网卡绑定bond详解--单网卡绑定多个IP
Linux双网卡绑定bond详解 1 什么是bond 网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术.Kernels 2.4.12及 ...
- Echarts 折线图y轴标签值过长 显示
参考: https://blog.csdn.net/dandelion_drq/article/details/79270597 改变Y轴单位:https://www.cnblogs.com/cons ...
- springboot启动不能加载数据库驱动Failed to determine a suitable driver class
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/G:/sharp/repo ...
- liunx mysql 5.7 二进制安装
liunx 5.6版本 本人安装次数不下20次,基本上按照正常的操作流程不会出现什么问题,一切顺利. 今天开发新项目需要按照mysql 5.7 版本.mysql 5.7版本和mysql 5.6版本变化 ...
- Unix-Time
1. Unix_time 2. Year_2000_problem 3. Year_10,000_problem 4. Year_2038_problem 5. Time_formatting_and ...
- Day6 - K - 陌上花开 HYSBZ - 3262
有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美丽,当且仅Sa>= ...
- Go 函数与闭包
函数 1.函数与闭包 func adder() func (value int){ sum := 0 return func(value int) int{ sum += value return s ...
- 019.CI4框架CodeIgniter辅助函数类之:Array数组查询
01. 数组辅助函数,可以方便的查看数组内部的成员,用法如下图所示: <?php namespace App\Controllers; class Hello extends BaseContr ...