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 ...
随机推荐
- WCF-001:WCF的发布
随着“云”时代的到来,“云”已经无处不在了.什么是“云”,无非就是利用互联网强大的功能建立多个服务器,然后再利用互联网的传输数据的特点将数据从某个服务器中读取出来或者将你的数据上传上去.当然这个服务器 ...
- BZOJ 2007 NOI2010 海拔高度 最小减产计划
标题效果:YT城市是一个精心规划的城市.这个城市是东西向和南北向干道成n×n地区性.简单.可以YT作为一个城市广场,每个区域也可被视为一个正方形.因此,.YT市中含有(n+1)×(n+1)交叉口和2n ...
- android传感器;摇抽奖功能
package com.kane.sensortest; import java.util.Random; import android.hardware.Sensor; import android ...
- sql基础之DDL(Data Definition Languages)
好久没写SQL语句了,复习一下. DDL数据定义语言,DDL定义了不同的数据段.数据库.表.列.索引等数据库对象的定义.经常使用的DDL语句包含create.drop.alter等等. 登录数据:my ...
- 编程算法 - 分割数 代码(C)
分割数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 有n个无差别的物品, 将它们划分成不超过m组, 求出划分方法数模M的余数. 比如: n= ...
- Directx11学习笔记【十】 画一个简单的三角形
本篇笔记要实现的是在屏幕上渲染出一个三角形,重点要学习的是渲染一个几何体的流程方式. 为了渲染几何图形,需要一个顶点缓存和一个描述顶点布局的输入层,还有着色器(主要是顶点着色器和像素着色器),下面来看 ...
- linux进程通信之共享内存
共享内存同意两个或多个进程共享一给定的存储区,由于数据不须要来回复制,所以是最快的一种进程间通信机制.共享内存能够通过mmap()映射普通文件(特殊情况下还能够採用匿名映射)机制实现,也能够通过系统V ...
- Visual Studio 连接不上NuGet 官方程序包源的解决办法
修改dns 即可
- C# WinForm dataGridView 技巧小结
1.不显示第一个空白列RowHeaderVisible属性设置为false 2.点击cell选取整行SelectinModel属性FullRowSelectRowSelectinModel属性设置或用 ...
- 开源Math.NET基础数学类库使用(02)矩阵向量计算
原文:[原创]开源Math.NET基础数学类库使用(02)矩阵向量计算 开源Math.NET基础数学类库使用系列文章总目录: 1.开源.NET基础数学计算组件Math.NET(一)综合介绍 ...