• POJ-2993 Emag eht htiw Em Pleh---棋盘模拟


    题目链接:

    https://vjudge.net/problem/POJ-2993

    题目大意:

    输入和输出和这里相反。

    思路:

    模拟题,没啥算法,直接模拟,不过为了代码精简,还是花了一点心思的

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<queue>
     7 #include<stack>
     8 #include<map>
     9 #include<sstream>
    10 using namespace std;
    11 typedef long long ll;
    12 const int maxn = 1e2 + 10;
    13 const int INF = 1 << 30;
    14 int dir[4][2] = {1,0,0,1,-1,0,0,-1};
    15 int T, n, m, x;
    16 char Map[40][40];
    17 void init()//将棋盘初始化
    18 {
    19     for(int i = 0; i < 17; i++)
    20     {
    21         if(i & 1)
    22         {
    23             for(int j = 0; j < 33; j ++)
    24             {
    25                 if(j % 4 == 0)Map[i][j] = '|';
    26                 else if(((i / 2) & 1) == ((j / 4) & 1))Map[i][j] = '.';//这波操作好好理解,为了代码精简想出来的
    27                 else Map[i][j] = ':';
    28             }
    29         }
    30         else for(int j = 0; j < 33; j++)
    31             if(j % 4 == 0)Map[i][j] = '+';
    32             else Map[i][j] = '-';
    33     }
    34 }
    35 void output()//输出棋盘
    36 {
    37     for(int i = 0; i < 17; i++)
    38     {
    39         for(int j = 0; j < 33; j++)
    40         {
    41             cout<<Map[i][j];
    42         }
    43         cout<<endl;
    44     }
    45 }
    46 void solve(int d)
    47 //x表示偏移量,白色的时候调用solve(0),黑色调用solve(32)
    48 //表示每个大写字母加上32变成小写字母
    49 {
    50     string s;
    51     getline(cin, s);
    52     for(int i = 0; i < s.size(); i++)
    53     {
    54         if(s[i] == ':' || s[i] == ',')s[i] = ' ';
    55     }
    56     stringstream ss(s);
    57     string s1;
    58     while(ss >> s1)
    59     {
    60         int x, y;
    61         if(s1.size() == 2)
    62         {
    63             x = s1[1] - '0';
    64             y = s1[0] - 'a';
    65             x = 17 - x * 2;//将行数转化成具体在数组里面的行数
    66             y = y * 4 + 2;//将列数转化成具体的列数
    67             Map[x][y] = 'P' + d;//这里加上d
    68         }
    69         else if(s1.size() == 3)
    70         {
    71             x = s1[2] - '0';
    72             y = s1[1] - 'a';
    73             x = 17 - x * 2;
    74             y = y * 4 + 2;
    75             Map[x][y] = s1[0] + d;
    76         }
    77     }
    78 }
    79 int main()
    80 {
    81     init();
    82     solve(0);
    83     solve('a' - 'A');
    84     output();
    85     return 0;
    86 }
  • 相关阅读:
    Matlab2018 b 下载和安装激活说明
    亿图思维导图软件 Edraw MindMaster Pro 8.0.102 中文直装版全功能专业版
    中华人民共和国民法典全文及下载
    qbxt DAY3 T4
    洛谷P1972 [SDOI2009]HH的项链——题解
    洛谷P2824 [HEOI2016/TJOI2016]排序——题解
    洛谷P1966 火柴排队——题解
    逆序对小记(~dtk)
    0/1分数规划 小记
    洛谷P3199 [HNOI2009]最小圈——题解
  • 原文地址:https://www.cnblogs.com/fzl194/p/8719205.html
Copyright © 2020-2023  润新知