/*排序函数要写对,优先级: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. C#反射实例(一) 利用反射使用类库

    在网上查找了不少的资料,可以说大同小异,概念性的东西网上一搜一堆,今天把反射的东西整理了一下,供大家使用,我保证我这里是最全面的东西,当然也是基础的东西,在学好了这一切的基础上,大家可以学习反射的具体 ...

  2. [转]SpecFlow使用入门

    SpecFlow是一个BDD工具,在这里对BDD不多赘述,你可以阅读一下微软2010年十二月的一篇文章,此外如果你想要更多了解SpecFlow,可以参考我的另一篇翻译(当然,也可以直接进入官网) 一. ...

  3. yalmip + lpsolve + matlab 求解混合整数线性规划问题(MIP/MILP)

    最近建立了一个网络流模型,是一个混合整数线性规划问题(模型中既有连续变量,又有整型变量).当要求解此模型的时候,发现matlab优化工具箱竟没有自带的可以求解这类问题的算法(只有bintprog求解器 ...

  4. C++获取系统时间方法(毫秒级)

    #include <sys/time.h> long getCurrentTime() { struct timeval tv; gettimeofday(&tv,NULL); r ...

  5. MathType可以编辑物理公式吗

    很多的物理专业的人都在为编辑物理公式头疼,其实要写出这些公式并不难,要写出这些物理公式,那你就需要一个MathType公式编辑器!这是一款专业的公式编辑器,不管多复杂的公式或方程,都可以用它编辑出来, ...

  6. 【BZOJ1996】[Hnoi2010]chorus 合唱队 区间DP

    [BZOJ1996][Hnoi2010]chorus 合唱队 Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Ou ...

  7. apk获取源码(dex2jar、jd-gui)

    1.下载dex2jar.zip,并解压文件 2.下载jd-gui.zip,解压文件 3.解压apk文件,找到其中的classes.dex 4.将classes.dex复制到dex2jar.bat所在目 ...

  8. Oracle 数据库的组成(instance+database)

    Oracle服务器是一种对象关系数据库管理系统,它为信息管理提供开放.综合.集成的方法. Oracle服务器中有多种进进程.内存结构和文件: Oracle服务器由一个Oracle实例和一个Oracle ...

  9. mysql 数据库备 及移动当天数据到历史表里 window下可用

    1 数据移动到历史表中,同时删除当天数据 test-move-record.bat c: cd C:\FQ_ManageServer\mysqlback mysql.exe -h 10.71.1.23 ...

  10. mfc中 控件 对话框 添加颜色 背景图片

    1 设置对话框透明 在设置控件颜色中要使用 nCtlColor Contains one of the following values, specifying the type of control ...