PAT 甲级1031 Hello World for U 关系式推导

这道题的关键在于对底部宽度和高度之间关系的理解,加之题中使用英语给出的关系,特别难以读懂

对于max函数,可以直接理解成n1=n3=k<=n2,结合之后的关系式,然后经过画图发现,输出图形的高度=(字符串长度+2/3)

有了高度,剩下分两步输出图形即可:

  • 输出底部之上的,循环次数为high-1,中间空格的个数为len-2*(high-1)-2,其中len为字符串长度
  • 输出底部,字符串起始下标为high-1,长度为len-2*(high-1)
#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a;
    cin>>a;
    int len=a.size(),high;
    high=(len+2)/3;
    for(int i=0;i<high-1;i++)
    {
        cout<<a[i];
        for(int j=0;j<len-2*(high-1)-2;j++)cout<<" ";
        cout<<a[len-i-1]<<endl;
    }
    cout<<a.substr(high-1,len-2*(high-1));
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42240667/article/details/108235358