/*排序函数要写对,优先级: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. 【BZOJ】3300: [USACO2011 Feb]Best Parenthesis(模拟)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3300 这个细节太多QAQ 只要将所有的括号'('匹配到下一个')'然后dfs即可 简单吧,,, #i ...

  2. org.springframework.beans.factory.parsing.BeanDefinitionParsingException

    今天在练习spring aop时.调试程序出现下面错误 org.springframework.beans.factory.parsing.BeanDefinitionParsingException ...

  3. Ubuntu14.4下安装FTP

    今天学习了Ubuntu上安装ftp的实例. 1.window上已经安装wamp(windows + apache + mysql + php) 2.window上已安装VMware Workstati ...

  4. (转)数据库ACID特性

    转自:http://blog.csdn.net/shuaihj/article/details/14163713 隔离级别实现原理:http://www.cnblogs.com/wrencai/p/5 ...

  5. uva414 - Machined Surfaces

    uva414 - Machined Surfaces /* 水题,值得一提的是,getline使用时注意不能让它多吃回车键,处理方法可以用getchar. */ #include <iostre ...

  6. Android中Bitmap、Drawable、byte[]转换

    public byte[] getBitmapByte(Bitmap bitmap){ ByteArrayOutputStream out = new ByteArrayOutputStream(); ...

  7. AngularJS 讲解,三 过滤器

    过滤器用来格式化需要展示给用户的数据.AngularJS有很多实用的内置过滤器,同时也提供了方便的途径可以自己创建过滤器. 在HTML中的模板绑定符号{{ }}内通过|符号来调用过滤器.例如:{{va ...

  8. Minecraft Forge编程入门二 “工艺和食谱”

    从现在开始我们就要开始真正写代码了,还没有来得及配置环境的同学可以参考Minecraft Forge编程入门一 "环境搭建"这篇文章来进行环境搭建. 工艺(Craft)和食谱(Re ...

  9. selenium调用Firefox和Chrome需要注意的一些问题,和出现的报错selenium:expected [object undefined] undefined to be a string

    在高版本selenium下如:selenium3.4.3 1.高版本的selenium需要浏览器安装一些补丁驱动 Firefox:geckodriver 下载网址:http://download.cs ...

  10. php 图片验证码

    1.原理 数组中每个图片对应一个值->随机值->获取并保存到$_SESSION中,->获取随机值对应的图片,->通过__FILE__输出图片,->浏览器验证 2.代码 c ...