Help Me with the Game(imitate)
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 3630 | Accepted: 2319 |
Description
Input
Output
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
Source
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
#include<algorithm>
using namespace std;
char st[] , chess[][] ;
int a[][] ; struct white
{
char ch , row , col;
int pow ;
}wh[]; struct black
{
char ch , row , col ;
int pow ;
}bl[]; bool cmp2 (white a , white b)
{
if (a.pow < b.pow)
return ;
if (a.pow > b.pow)
return ;
if (a.pow == b.pow ) {
if (a.row == b.row)
return a.col < b.col ;
else
return a.row < b.row ;
}
} bool cmp1 (black a , black b)
{
if (a.pow < b.pow)
return ;
if (a.pow > b.pow)
return ;
if (a.pow == b.pow ) {
if (a.row == b.row)
return a.col < b.col ;
else
return a.row > b.row ;
}
} int main ()
{
// freopen ("a.txt" , "r" , stdin) ;
for (int i = ; i <= ; i++) {
if (i & )
gets (st) ;
else
gets (chess[i / ]) ;
}
int k , f; for (int i = ; i <= ; i++) {
k = ;
for (int j = ; j < ; j += , k++) {
switch ( chess[i][j] )
{
case 'k' : a[i][k] = ; break ;
case 'q' : a[i][k] = ; break ;
case 'r' : a[i][k] = ; break ;
case 'b' : a[i][k] = ; break ;
case 'n' : a[i][k] = ; break ;
case 'p' : a[i][k] = ; break ;
case 'K' : a[i][k] = - ; break ;
case 'Q' : a[i][k] = - ; break ;
case 'R' : a[i][k] = - ; break ;
case 'B' : a[i][k] = - ; break ;
case 'N' : a[i][k] = - ; break ;
case 'P' : a[i][k] = - ; break ;
case ':' : a[i][k] = ; break ;
case '.' : a[i][k] = ; break ;
default : break ;
}
}
}
/* for (int i = 1 ; i <= 8 ; i++) {
for (int j = 1 ; j <= 8 ; j++) {
printf ("%d\t" , a[i][j]) ;
}
puts ("") ;
}*/
k = , f = ;
for (int i = ; i <= ; i++) {
for (int j = ; j <= ; j++) {
if (a[i][j] > ) {
bl[k].pow = a[i][j] ;
bl[k].row = '' + - i ;
bl[k].col = 'a' + j - ;
switch (a[i][j])
{
case : bl[k].ch = 'K' ; break ;
case : bl[k].ch = 'Q' ; break ;
case : bl[k].ch = 'R' ; break ;
case : bl[k].ch = 'B' ; break ;
case : bl[k].ch = 'N' ; break ;
default : break ;
}
k++ ;
}
if (a[i][j] < ) {
wh[f].pow = -a[i][j] ;
wh[f].row = '' + - i ;
wh[f].col = 'a' + j - ;
switch (-a[i][j])
{
case : wh[f].ch = 'K' ; break ;
case : wh[f].ch = 'Q' ; break ;
case : wh[f].ch = 'R' ; break ;
case : wh[f].ch = 'B' ; break ;
case : wh[f].ch = 'N' ; break ;
default : break ;
}
f++ ;
}
}
} sort (bl , bl + k , cmp1) ;
sort (wh , wh + f , cmp2) ; printf ("White: ") ;
for (int i = ; i < f ; i++) {
// printf ("wh[%d].pow = %d\n" , i , wh[i].pow) ;
if (wh[i].pow != )
printf ("%c" , wh[i].ch) ;
printf ("%c%c" , wh[i].col , wh[i].row ) ;
if (i != f - )
printf (",") ;
}
puts ("") ; printf ("Black: ") ;
for (int i = ; i < k ; i++) {
if (bl[i].pow != )
printf ("%c" , bl[i].ch) ;
printf ("%c%c" , bl[i].col , bl[i].row ) ;
if (i != k - )
printf (",") ;
}
puts ("") ;
return ;
}
Help Me with the Game(imitate)的更多相关文章
- Emag eht htiw Em Pleh(imitate)
Emag eht htiw Em Pleh Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2901 Accepted: ...
- Robot Motion(imitate)
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11065 Accepted: 5378 Des ...
- Crashing Robots(imitate)
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8124 Accepted: 3528 D ...
- Parencodings(imitate)
Parencodings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20679 Accepted: 12436 De ...
- [JavaScript] Imitate String.Format() in c#
Definition if (!String.prototype.format) { String.prototype.format = function () { var args = argume ...
- Basic Tutorials of Redis(8) -Transaction
Data play an important part in our project,how can we ensure correctness of the data and prevent the ...
- 第一届山东省ACM——Balloons(java)
Description Both Saya and Kudo like balloons. One day, they heard that in the central park, there wi ...
- Essential controls for web app
AUTO-COMPLETE/AUTO-SUGGEST Auto-complete using Vaadin Offer auto-suggest or auto-complete to help yo ...
- sqlmap用户手册 | WooYun知识库
sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息. 原文:http://drops.wooyun.org/tips/143 ============ ...
随机推荐
- XP明年就被停止技术支持,这会带来什么?谈谈如何做决策
XP是MS的一款老牌操作系统,相信大家都不陌生,甚至还有继续使用的人,当然了,在虚拟机里用它也是很好用的,不过,再漂亮的姑娘,也有嫁人的时候,作为XP的父母,MS微软明年四月将停止支持有十多年历史的 ...
- ArcGIS中的北京54和西安80投影坐标系详解
ArcGIS中的北京54和西安80投影坐标系详解 1.首先理解地理坐标系(Geographic coordinate system),Geographic coordinate system直译为地理 ...
- 搭建andiord sdk和安装eclipse adt插件的个人小体会
由于以前就已经搭建好了java jdk的运行环境这里就不多说了,不过这几天看了一篇博客才明白jdk变量环境设置的某些要义,不在是人云亦云而不知其所以然. 其博客的地址:http://www.cnblo ...
- Qt webkit插件相关知识
1.在Qt中使用 WebKit 浏览器核心 使用 QtWebKit 需要在工程文件(*.pro)中加入: 1. QT +=webkit 2. QT += n ...
- Maven 教程
Maven 教程 序:几次对Maven 的学习,都因为各种原因 而中途切断了,再一次学习的时候,又不得不重新开始,结果发现 又不记得步骤 又找不到对应的文档.别人写的再好,终究比不过自己亲手实践的得出 ...
- web开发(二十一)之自定义拦截器的使用
转自博客:http://blog.csdn.net/pkgk2013/article/details/51985817 拦截器的作用 拦截器,在AOP(Aspect-Oriented Programm ...
- 【HDU 2955】Robberies(DP)
题意是给你抢劫每个银行可获得的钱m和被抓的概率p,求被抓的概率小于P,最多能抢多少钱.01背包问题,体积是m,价值是p.被抓的概率不是简单相加,而应该是1−Π(1−p[i])DP:dp[i]表示抢到i ...
- Java编程思想学习(二) 操作符
1. 对象“赋值”:对一个对象进行操作时,我们真正操作的是对对象的引用.所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方.(引用于对象之间存在关联,但这种关联可以被改 ...
- 粒子群优化算法-python实现
PSOIndividual.py import numpy as np import ObjFunction import copy class PSOIndividual: ''' individu ...
- BZOJ-1968 COMMON 约数研究 数论+奇怪的姿势
1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1513 Solved: 1154 [Submit] ...