andyli

题解 洛谷 P4470 【[BJWC2018]售票】
这是一道字符串的模拟题。我们可以利用C++的string来简化我们的代码。其实存储屏幕上的字母只需要用一维数组,然...
扫描右侧二维码阅读全文
15
2018/12

题解 洛谷 P4470 【[BJWC2018]售票】

这是一道字符串的模拟题。我们可以利用C++string来简化我们的代码。其实存储屏幕上的字母只需要用一维数组,然后在输出的时候处理一下。

把所有的都输入完以后,检查哪个目的地字符串的前缀是当前打进去的字符,然后把这个目的地前缀的后一个字符填充到屏幕里面。思路非常简单。

代码如下:

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
const int maxn = 55;

string A[maxn];
int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> A[i];
    string read;
    cin >> read;
    string screen(32, '*');
    size_t readlen = read.length();
    for (int i = 0; i < n; i++)
        if (A[i].substr(0, readlen) == read && A[i].length() > readlen) // 注意这个目的地的长度必须大于读入的前缀
            screen[A[i][readlen] - 'A' + 3] = A[i][readlen];
    for (size_t i = 0; i < screen.length(); i++)
    {
        cout.put(screen[i]);
        if ((i + 1) % 8 == 0 && i)
            cout << endl;
    }
    while (1); // 防抄袭
    return 1; // 防抄袭
}
Last modification:June 25th, 2019 at 11:16 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment