/*排序函数要写对,优先级:K,Q,R,B,N,P
白色的:如果优先级一样,那么按照行数大的优先,如果行数一样,那么列数小的优先
黑色的:如果优先级一样,那么按照行数小的优先,如果行数一样,那么列数小的优先
第一个在左下脚,向上数*/
#include<stdio.h>
#include<string.h>
#include<algoritm>
using namespace std;
struct point
{
int i,j;
char c;
int num;
}p[];
int cmp(const point a,const point b)
{
if(a.num==b.num)
{
if(a.i==b.i) return a.j<b.j;
return a.i>b.i;
}
return a.num>b.num;
}
int cmp1(const point a,const point b)
{
if(a.num==b.num)
{
if(a.i==b.i) return a.j<b.j;
return a.i<b.i;
}
return a.num>b.num;
}
int chack(char c)
{
if(c=='K' || c=='k') return ;
if(c=='Q' || c=='q') return ;
if(c=='R' || c=='r') return ;
if(c=='B' || c=='b') return ;
if(c=='N' || c=='n') return ;
if(c=='P' || c=='p') return ;
}
int find(int n)
{
if(n==) return 'a';
if(n==) return 'b';
if(n==) return 'c';
if(n==) return 'd';
if(n==) return 'e';
if(n==) return 'f';
if(n==) return 'g';
if(n==) return 'h';
}
int ok(int n)
{
if(n==) return ;
if(n==) return ;
if(n==) return ;
if(n==) return ;
if(n==) return ;
if(n==) return ;
if(n==) return ;
if(n==) return ;
}
int main()
{
int i,j,k,n,m;
char s[][];
memset(p,,sizeof(p));
for(i=;i<=;i++)
{
gets(s[i]);
}
k=;
for(i=;i>=;i--)
{
m=strlen(s[i]);
for(j=;j<m;j++)
{
if(s[i][j]=='K' || s[i][j]=='Q' || s[i][j]=='R' || s[i][j]=='B'
|| s[i][j]=='N' || s[i][j]=='P')
{ p[k].i=i;
p[k].j=j;
p[k].c=s[i][j];
p[k++].num=chack(s[i][j]);
}
}
} sort(p,p+k,cmp);
printf("White: ");
for(j=;j<k;j++)
{
if(j== && p[j].c=='P' )
{
printf("%c%d",find(p[j].j),ok(p[j].i));
}
else if(j==) printf("%c%c%d",p[j].c,find(p[j].j),ok(p[j].i));
else
{
if(p[j].c=='P') printf(",%c%d",find(p[j].j),ok(p[j].i));
else printf(",%c%c%d",p[j].c,find(p[j].j),ok(p[j].i));
}
}
printf("\n");
for(i=;i<k;i++)
{
p[i].i=;
p[i].j=;
p[i].num=;
p[i].c='\0';
}
k=;
for(i=;i<=;i++)
{
m=strlen(s[i]);
for(j=;j<m;j++)
{
if(s[i][j]=='k' || s[i][j]=='q' || s[i][j]=='r' || s[i][j]=='b'
|| s[i][j]=='n' || s[i][j]=='p')
{ p[k].i=i;
p[k].j=j;
p[k].c=s[i][j];
p[k++].num=chack(s[i][j]);
}
}
}
sort(p,p+k,cmp1);
printf("Black: ");
for(j=;j<k;j++)
{
if(j== && p[j].c=='p' )
{
printf("%c%d",find(p[j].j),ok(p[j].i));
}
else if(j==) printf("%c%c%d",p[j].c-,find(p[j].j),ok(p[j].i));
else
{
if(p[j].c=='p') printf(",%c%d",find(p[j].j),ok(p[j].i));
else printf(",%c%c%d",p[j].c-,find(p[j].j),ok(p[j].i));
}
}
printf("\n");
return ;
}

poj2996的更多相关文章

  1. POJ-2996 Help Me with the Game---模拟棋子

    题目链接: https://vjudge.net/problem/POJ-2996 题目大意: 给出白方和黑方的棋子和对应的坐标,输出该副棋盘的样子 1,棋盘中大写字母表示的是白方棋子,小写是黑方.2 ...

  2. poj2996 模拟

    Help Me with the Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3713   Accepted:  ...

  3. POJ2996 Help Me with the Game(模拟)

    题目链接. 分析: 简单模拟. #include <iostream> #include <queue> #include <cstdio> #include &l ...

  4. 【POJ2996】Help Me with the Game

    题目传送门 本题知识点:模拟(如果对国际象棋不熟悉的同学可以先百度一下) 题意很简单,就是让我们找出白棋跟黑棋每枚棋子的位置,并要按照一定的顺序输出( K -> Q -> R -> ...

  5. poj分类 很好很有层次感。

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  6. 【转】POJ题目分类推荐 (很好很有层次感)

    OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期: 一. ...

  7. 【转】ACM训练计划

    [转] POJ推荐50题以及ACM训练方案 -- : 转载自 wade_wang 最终编辑 000lzl POJ 推荐50题 第一类 动态规划(至少6题, 和 必做) 和 (可贪心) (稍难) 第二类 ...

  8. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  9. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

随机推荐

  1. SRM 719 Div 1 250 500

    250: 题目大意: 在一个N行无限大的网格图里,每经过一个格子都要付出一定的代价.同一行的每个格子代价相同. 给出起点和终点,求从起点到终点的付出的最少代价. 思路: 最优方案肯定是从起点沿竖直方向 ...

  2. 关于TextView的一些初步解说

    Android里面的textview是一个相当重要的类.相信做安卓的开发人员在每一个应用里面都一定用到了它,而且它也是Button,EditTextView等子控件的父类. 对于View的流程:mea ...

  3. Hadoop2的FN安装(federated namespace)

    尝试了简单的安装hadoop2后,我们再来尝试一下hdfs的一项新功能:FN.这项技术可以解决namenode容量不足的问题.它采用多个namenode来共享datanode的方式,每个namenod ...

  4. 修改一些IntelliJ IDEA 11的设置,使Eclipse的使用者更容易上手(转)

    用惯了Eclipse,再来使用IntelliJ IDEA真是很难适应. 设置1:字体 修改IDE的字体:设置-Appearance-Look and Feel-OverRide设置你想要的字体.我设置 ...

  5. python入门(一):基础语法

    1.修改字符编码# -*- coding: cp-1252 -*-2.标识符以字母或下划线开头,大小写敏感3.以缩进表示代码块,同一个代码块缩进必须一致4.多行代码用反斜杠表示,() [] {}则不需 ...

  6. windows平台 - 0基础学习node.js(一)

    首先得明白node.js做什么用的: 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Nod ...

  7. 170209、mysql索引的建立

    用到索引最普通的情况,是为出现在where子句的字段建一个索引.为方便讲述,我们先建立一个如下的表. Code代码如下: CREATE TABLE mytable ( id serial primar ...

  8. MyEclipse中手工添加dtd支持

    1.先下载好相应的dtd文件,如struts-2.3.dtd 2.打开MyEclipse,Window->Preferences 在搜索框中输入"XML Catalog" 3 ...

  9. J2EE知识体系(简单整理)

  10. 把配置和环境解耦 eliminate “works on my machine” problems when collaborating on code with co-workers docker架构与解决的问题

    Docker实践 - 懒人的技术笔记 - 博客频道 - CSDN.NET  http://blog.csdn.net/lincyang/article/details/43055061 Docker直 ...