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 ============ ...
随机推荐
- Common Lisp编译程序的小技巧
这几天开始玩Common Lisp,遇上了一个有意思的问题,CL一般是解释运行,也有实现可以编译生成字节码(fas文件).我正在用的两种CL实现是SBCL和CLISP,前者是我从<实用Commo ...
- fis-receiver:一行命令将项目部署到远程服务器
前言 本项目基于FIS2,没了.其实fis项目本身就提供了php版本的范例,这里翻译成node版本. 项目地址:https://github.com/chyingp/fis-receiver 服务端接 ...
- C#异步编程一
前几天把Code First系列总结完,想着下步总结什么,原本想着XML,不过XML的内容比较多,还有3天班就中秋节了,想在中秋节前在完成一个系列,所以决定把异步这块总结下.说起异步可能会认为就是多线 ...
- Spring cloud实现服务注册及发现
服务注册与发现对于微服务系统来说非常重要.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务. 本文属于<7天学会spring cloud系列& ...
- C# 6.0部分新特性
Struct的默认构造函数和属性赋值 我看C# 6 introduce 提到这个功能.但vs2015搭载的NET4.6貌似还不支持这个.所以也不好判断. 属性赋值 /// <summary> ...
- 使用TinkPHP实现品字形布局
一.后台管理模版 后台管理模版通常使用frameset/iframe来布局.例如: <!DOCTYPE html> <html> <head> <title& ...
- ajax中的application/x-www-form-urlencoded中的使用
ajax中的application/x-www-form-urlencoded中的使用一,HTTP上传的基本知识 在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定 ...
- jquery 的 sort 函数
members = [45, 23, 12, 34];members = members.sort(function(a, b){return a-b; );这里面a-b为升序,b-a降序排列:但a, ...
- .NET Core 在Visual Studio 2015 下的使用-MSDN
.NET Core RC2 现已推出,这是真正的"候选发布"而非 RC1 Beta 冒充的候选发布(如果是那样,请考虑发布后出现的所有更改).当前,围绕 .NET Core 的开发 ...
- 配置hibernate
http://blog.csdn.net/hanjiancanxue_liu/article/details/9966423