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 ...
随机推荐
- MySQL Windows ZIP 免费安装和启动设置
MySQL Windows ZIP免安装版,设置和启动的过程事实上挺麻烦的.以下一步一步介绍使用的过程: 1.下载Windows (x86, 64-bit), ZIP Archive: 2.解压zip ...
- 【iOS】使用SQLite与FMDB
iOS中的SQLite与Android中的一模一样,仅仅是调用方法有差异.假设单从调用来讲,Android封装的一套helper更好用一些,而iOS原生的用C语言的几个函数在操作,比較麻烦.只是引入第 ...
- 【程序猿助手】Emacs,最强的编辑器,之间的不
wx_fmt=png" alt="" style="max-width:100%; height:auto!important"> 内容简单 ...
- [转载] RaspberryPi B+ WiringPi 引脚对应图
Pin Numbering - Raspberry Pi Model B+ Numbering Scheme Expansion Header J8 Pinout (40-pin Header) Ad ...
- cocos2d-x-3.1在eclipse中的环境搭建
cocos2d-x-3.0出来后,到如今3.1. 自己在eclipse配置上走了不少弯路,记下来给大家方便,给自己方便. 前提条件: * Android NDK * Android SDK **OR* ...
- HTML介绍JS
首先,该脚本的链接插入HTML代码: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU2h1aVRpYW5OYWlMdW8=/font/5a6L5L2T/f ...
- Xamarin.Android 入门实例(2)之实现WCF 寄宿于IIS 的Web服务提供
1.WCF 契约 ICalculator.cs using System.ServiceModel; namespace Contracts { [ServiceContract] public in ...
- Autodesk FBX SDK Program 中文 (二)
这是Autodesk FBX SDK学习笔记第二篇.下面部分汉字翻译自Autodesk FBX SDK Program.翻译人:有道翻译. 上一篇讲了一些FBX SDK的基本操作.创建FbxManag ...
- jQuery 焦点图,图像文件js档
jQuery 焦点图,图片文件在js文件里 演示 XML/HTML Code <div id="photo_container"></div> JavaSc ...
- PDE_DATA 定义
PDE_DATA 定义 Location: /fs/proc/internal.h static inline struct proc_dir_entry *PDE(const struct inod ...