ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

超级恶心的模拟题 K - Emag eht htiw Em Pleh

2019-04-08 22:49:39  阅读:242  来源: 互联网

标签:Em ... eht 2996 模拟题 给出 input problem include


This problem is a reverse case of the problem 2996. You are given the output of the problem H and your task is to find the corresponding input.

Input
according to output of problem 2996.
Output
according to input of problem 2996.

Sample Input
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
Sample Output
+---+---+---+---+---+---+---+---+
|.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.|
+---+---+---+---+---+---+---+---+

题目中神奇的2996:戳下边:

http://poj.org/problem?id=2996

思路:就是2996的逆思路,给出位置,输出棋盘。。

首先给出白色棋的位置,第二行给出黑色棋的位置。
(按照"K" (King), “Q” (Queen), “R” (Rook), “B” (Bishop), “N” (Knight), or “P” (Pawn).的顺序给出,但是输入的没有P这个字母)。
其实输入是有顺序的,但是这道题跟顺序无关,
就记住,逗号之间的字母数字代表:a到h,是1到8列,1到8,是8到1行。。

AC代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<math.h>
#include<string>  //丢了个头文件,本地运行没问题,提交就没过。。
using namespace std;

char I[10][10];
int main()
{
    for(int i=1;i<=8;i++)
        for(int j=1;j<=8;j++)
            I[i][j]=((i+j)%2==0)?'.':':';//看题中的图分析,,是冒号还是句号
            
    string a;
    getline(cin,a);//直接输入一行,好遍历。。
    
    for(int i=7;i<a.size();i++)//前边的白黑单词一共占了坐标前6位。。。直接接过去就OK
    {
        if(a[i]=='K')//简单暴力的分了6种情况,好理解,反正就是先写一种,再CV5次嘛,,
        {
            int y=a[i+1]-'a'+1;//列坐标
            int x=a[i+2]-'0';//行坐标
            x=9-x;//行坐标是反的
            I[x][y]='K';
            i += 3;//接着往后遍历
        }
        else if(a[i]=='Q')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='Q';
            i += 3;
        }
        else if(a[i]=='R')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='R';
            i += 3;
        }
        else if(a[i]=='B')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='B';
            i += 3;
        }
        else if(a[i]=='N')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='N';
            i += 3;
        }
        else
        {
            int y=a[i]-'a'+1;
            int x=a[i+1]-'0';
            x=9-x;
            I[x][y]='P';
            i += 2;//注意,CV的时候,别+3了。。
        }
    }
    //CV上边的,改成小写字母
    getline(cin,a);
    for(int i=7;i<a.size();i++)
    {
        if(a[i]=='K')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='k';
            i += 3;
        }
        else if(a[i]=='Q')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='q';
            i += 3;
        }
        else if(a[i]=='R')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='r';
            i += 3;
        }
        else if(a[i]=='B')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='b';
            i += 3;
        }
        else if(a[i]=='N')
        {
            int y=a[i+1]-'a'+1;
            int x=a[i+2]-'0';
            x=9-x;
            I[x][y]='n';
            i += 3;
        }
        else
        {
            int y=a[i]-'a'+1;
            int x=a[i+1]-'0';
            x=9-x;
            I[x][y]='p';
            i += 2;
        }
    }
    for(int i=1;i<=8;i++)//输出!!!其实就循环4次的   。。
    {
        cout<<"+---+---+---+---+---+---+---+---+"<<endl;
        printf("|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|\n",I[i][1],I[i][2],I[i][3],I[i][4],I[i][5],I[i][6],I[i][7],I[i][8]);
        cout<<"+---+---+---+---+---+---+---+---+"<<endl;
        i++;
        printf("|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|:%c:|.%c.|\n",I[i][1],I[i][2],I[i][3],I[i][4],I[i][5],I[i][6],I[i][7],I[i][8]);
    }
    cout<<"+---+---+---+---+---+---+---+---+"<<endl;
    return 0;
}

标签:Em,...,eht,2996,模拟题,给出,input,problem,include
来源: https://blog.csdn.net/weixin_43250284/article/details/89111284

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有