题解 P5730 【【深基5.例10】显示屏】

· · 题解

这道题没有什么技术含量,就是暴力,上代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    char a[10000];
    string ans[10];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(a[i]=='1')
        {

        ans[1]+="..X.";
        ans[2]+="..X.";
        ans[3]+="..X.";
        ans[4]+="..X.";
        ans[5]+="..X.";
        }
        if(a[i]=='2')
        {
        ans[1]+="XXX.";
        ans[2]+="..X.";
        ans[3]+="XXX.";
        ans[4]+="X...";
        ans[5]+="XXX.";
        }
        if(a[i]=='3')
        {
        ans[1]+="XXX.";
        ans[2]+="..X.";
        ans[3]+="XXX.";
        ans[4]+="..X.";
        ans[5]+="XXX.";
        }
        if(a[i]=='4')
        {
        ans[1]+="X.X.";
        ans[2]+="X.X.";
        ans[3]+="XXX.";
        ans[4]+="..X.";
        ans[5]+="..X.";
        }
        if(a[i]=='5')
        {
        ans[1]+="XXX.";
        ans[2]+="X...";
        ans[3]+="XXX.";
        ans[4]+="..X.";
        ans[5]+="XXX."; 
        }
        if(a[i]=='6')
        {
        ans[1]+="XXX.";
        ans[2]+="X...";
        ans[3]+="XXX.";
        ans[4]+="X.X.";
        ans[5]+="XXX.";
        }
        if(a[i]=='7')
        {
        ans[1]+="XXX.";
        ans[2]+="..X.";
        ans[3]+="..X.";
        ans[4]+="..X.";
        ans[5]+="..X.";
        }
        if(a[i]=='8')
        {
        ans[1]+="XXX.";
        ans[2]+="X.X.";
        ans[3]+="XXX.";
        ans[4]+="X.X.";
        ans[5]+="XXX.";
        }
        if(a[i]=='9')
        {
        ans[1]+="XXX.";
        ans[2]+="X.X.";
        ans[3]+="XXX.";
        ans[4]+="..X.";
        ans[5]+="XXX.";
        }
        if(a[i]=='0')
        {   
        ans[1]+="XXX.";
        ans[2]+="X.X.";
        ans[3]+="X.X.";
        ans[4]+="X.X.";
        ans[5]+="XXX.";
        }
    }
    for(int i=1;i<=5;i++)
    {
        ans[i]=ans[i].substr(0,ans[i].length()-1);  
        cout<<ans[i]<<endl;
    }
    return 0;
}

暴力的思路,就是将显示屏割成 5 行分开操作,每次往后面接上一段就可以了。

唯一可说的可能就是最后的去点操作。substr 函数就是复制字符串操作,其形式为 substr(开始位置,复制多长)。我们将原字符串长度用 length 求出,然后减 1,就相当于将原字符串缩短一位,也就是去掉了最后一位(也就是题中的“ . ” ),从而实现了去点的目的。

还是希望能过审啊qwq