POJ 2996 & 2993 国际象棋布局 模拟
Description
Input
The letters are one of "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
of positions of the 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.
poj2993:
Sample Input
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
Sample Output
+---+---+---+---+---+---+---+---+
|.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.|
+---+---+---+---+---+---+---+---+
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char q[10],w[100];
char e[10],r[100];
char white[12]= {'K','Q','R','B','N','P'};
char black[12]= {'k','q','r','b','n','p'};
char map1[18][35];
int s1,s2;
int main()
{
int i,j;
for(i=1; i<=17; i++) //初始化地图
for(j=1; j<=33; j++)
{
if(i%2==1&&j%4==1)
map1[i][j]='+';
else if(i%2==1)
map1[i][j]='-';
else if(i%2==0&&j%4==1)
map1[i][j]='|';
else if(i%4==2&&(double)(j%8)/4<=1&&j%8!=0)
map1[i][j]='.';
else if(i%4==0&&((double)(j%8)/4>1||j%8==0))
map1[i][j]='.';
else
map1[i][j]=':';
}
for(int k=1; k<=2; k++) //两行输入
{
scanf("%s%s",q,w);
s1=strlen(w);
if(q[0]=='W')
{
for(i=0; i<=5; i++)
for(j=0; j<=s1; j++)
{
if(w[j]==white[i])
map1[2*(9-w[j+2]+'0')][4*(w[j+1]-'a')+3]=white[i];
if(w[j]==','&&w[j+1]>96)
map1[2*(9-w[j+2]+'0')][4*(w[j+1]-'a')+3]='P';
}
}
if(q[0]=='B')
{
for(i=0; i<=5; i++)
for(j=0; j<=s1; j++)
{
if(w[j]==white[i])
map1[2*(9-w[j+2]+'0')][4*(w[j+1]-'a')+3]=black[i];
if(w[j]==','&&w[j+1]>96)
map1[2*(9-w[j+2]+'0')][4*(w[j+1]-'a')+3]='p';
}
}
}
for(i=1; i<=17; i++)
{
for(j=1; j<=33; j++)
cout<<map1[i][j];
cout<<endl;
}
return 0;
}
poj2996:
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
代码:
#include<iostream>
#include<cstdio>
using namespace std;
char black[6]= {'K','Q','R','B','N','P'};
char white[6]= {'k','q','r','b','n','p'};
int main()
{
int s1,s2;
int i,j,k;
char map1[18][34];
s1=s2=0;
for(i=1; i<=17; i++)
for(j=1; j<=33; j++)
{
cin>>map1[i][j];
if(map1[i][j]=='p') //这个是为了不输出最后的那个逗号。。 。
s1++;
if(map1[i][j]=='P')
s2++;
}
cout<<"White: ";
for(k=0; k<6; k++)
for(i=17; i>=1; i--)
for(j=1; j<=33; j++)
{
if(i%2==0&&j%4==3&&k<=4)
if(map1[i][j]==black[k])
{
printf("%c%c%d,",black[k],'a'+(j+1)/4-1,9-i/2);
}
if(k==5&&i%2==0&&j%4==3)
if(map1[i][j]=='P')
{
s1--;
if(s1==0)
{
printf("%c%d\n",'a'+(j+1)/4-1,9-i/2);
continue;
}
printf("%c%d,",'a'+(j+1)/4-1,9-i/2);
}
}
cout<<"Black: ";
for(k=0; k<6; k++)
for(i=1; i<=17; i++)
for(j=1; j<=33; j++)
{
if(i%2==0&&j%4==3&&k<=4)
if(map1[i][j]==white[k])
{
printf("%c%c%d,",black[k],'a'+(j+1)/4-1,9-i/2);
}
if(k==5&&i%2==0&&j%4==3)
if(map1[i][j]=='p')
{
s2--;
if(s2==0)
{
printf("%c%d\n",'a'+(j+1)/4-1,9-i/2);
continue;
}
printf("%c%d,",'a'+(j+1)/4-1,9-i/2);
}
}
return 0;
}
基本渣 这样的模拟题只能用时间来堆TAT
POJ 2996 & 2993 国际象棋布局 模拟的更多相关文章
- 模拟 POJ 2996 Help Me with the Game
题目地址:http://poj.org/problem?id=2996 /* 题意:给出白方和黑方的棋子和对应的坐标,输出该副棋盘的样子 模拟题 + 结构体排序:无算法,switch区分读入的字符,按 ...
- POJ.3087 Shuffle'm Up (模拟)
POJ.3087 Shuffle'm Up (模拟) 题意分析 给定两个长度为len的字符串s1和s2, 接着给出一个长度为len*2的字符串s12. 将字符串s1和s2通过一定的变换变成s12,找到 ...
- poj 2996
提示:很烦很简单的国际象棋棋盘模拟,输入比较麻烦而已 输出时: 1.不论黑白,KQRBN P均是依次输出,强制大写,但不输出“P”,只输出其坐标 2.对白棋的位置,小行优先大行输出(行的数字越小则优先 ...
- poj 2996 Help Me with the Game(模拟)
题目:http://poj.org/problem?id=2996 题意:给出 棋盘 情况 输出 白棋 和 黑棋在 棋盘上的 白棋为大写字母 黑棋为小写字母 棋盘 左下点为原点(1,a) 输出 是 按 ...
- 快速切题 poj 2996 Help Me with the Game 棋盘 模拟 暴力 难度:0
Help Me with the Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3510 Accepted: ...
- Poj 2996 Help Me with the Game
1.Link: http://poj.org/problem?id=2996 2.Content: Help Me with the Game Time Limit: 1000MS Memory ...
- POJ 1936 All in All(模拟)
All in All 题目链接:http://poj.org/problem?id=1936 题目大意:判断从字符串s2中能否找到子串s1.字符串长度为10W. Sample Input sequen ...
- POJ 3009 Curling 2.0(DFS + 模拟)
题目链接:http://poj.org/problem?id=3009 题意: 题目很复杂,直接抽象化解释了.给你一个w * h的矩形格子,其中有包含一个数字“2”和一个数字“3”,剩下的格子由“0” ...
- Uva 127 poj 1214 `Accordian'' Patience 纸牌游戏 模拟
Input Input data to the program specifies the order in which cards are dealt from the pack. The inpu ...
随机推荐
- C++ Primer高速学习 第一章 获得二:输入和输出 (IO)
什么是输入输出.即Input-Output,缩写是非常装B的IO?请看经典民间解释: C++语言的输入输出是指信息从外部输入设备(如键盘.磁盘等)向计算机内部(内存)输入(即Input)和从内存向外单 ...
- iOS 通过HEX(十六进制)得到一个UIColor的对象
inline static UIColor* getColorFromHex(NSString *hexColor) { if (hexColor == nil) { return nil; } un ...
- Android开发之使用Handler封装下载图片工具类(源码分享)
假设每下载一张图片,就得重写一次Http协议,多线程的启动和handler的信息传递就显得太麻烦了,我们直接来封装一个工具类,便于我们以后在开发时随时能够调用. (1)在清单文件加入权限 <us ...
- Install Oracle 11gR2 on Debian wheezy(转)
Install Oracle 11gR2 on Debian wheezy 出处:http://gaiustech.wordpress.com/2013/06/26/howto-install-ora ...
- OPhone SDK初体验
OPhone SDK初体验 write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 背景说明 中国伟大的垄断龙头,世界上也是顶尖的中移动最 ...
- filestream.read(buffer,offset,count)的正确解释
filestream.read(buffer,offset,count) offset是buffer的偏移量 所以,filestream.read(buffer,1,count)会报下面的错 Syst ...
- WPF绘制党徽(立体效果,Cool)
原文:WPF绘制党徽(立体效果,Cool) 前面用WPF方式绘制了党旗(WPF制作的党旗) ,去年3月份利用C# 及GDI+绘制过党徽,这次使用WPF来绘制党徽. ------------------ ...
- 截图工具 Snagit
相对于其他截图工具方面,Snagit 一个主要特点是: 滚动截图. 另:同样基于手工绘制的形状截图, 有可能截取文本(测试只 windows在窗口内的目录 要么 文件名 实用). 不管是 web页,是 ...
- Directx11学习笔记【十二】 画一个旋转的彩色立方体
上一次我们学习了如何画一个2D三角形,现在让我们进一步学习如何画一个旋转的彩色立方体吧. 具体流程同画三角形类似,因此不再给出完整代码了,不同的部分会再说明. 由于我们要画彩色的立方体,所以顶点结构体 ...
- 查看SQLSERVER内部数据页面的小插件Internals Viewer
原文:查看SQLSERVER内部数据页面的小插件Internals Viewer 查看SQLSERVER内部数据页面的小插件Internals Viewer 感觉internals viewer这个名 ...