PAT_1045 Hello World for U (20)

题目描述:

给定任意N(> = 5)个字符的字符串,系统会要求您将字符组成U形。例如,“helloworld”可以打印为:


U型

其中要求为:U尽可能地平方 - 也就是说,必须满足n1 =
n3 = max {k | 对于所有3 <= n2 <= N},k <= n2,其中n1 + n2 + n3-2 = N.

输入

一行字符串(长度为5-80)

输出

输出U型字符。

解题思路

因为要求三条边尽可能的平方,且由条件可以看出,且尽可能的使n2最大化。推出规则。
n2 = (n + 2) % 3 + (n + 2) / 3;
n3 = n1 = (n + 2 - n2) / 2;

代码

#include
#include
#include
using namespace std;
int main() {
    string str;
    cin >> str;
    int n1, n2, n3,n= str.size();
    n2 = (n + 2) % 3 + (n + 2) / 3;
    n1 = (n + 2 - n2) / 2;
    n3 = n1;
    for (int i = 0; i < n1-1; i++) {
        cout << str[i];
        for (int j = 0; j < n2 - 2; j++) {
            cout << " ";
        }
        cout << str[n - i - 1] << endl;
    }
    for (int i = n1-1; i < n1 + n2-1; i++) {
        cout << str[i];
    }
    cout << endl;
    return 0;
}


我是6J,爱吃爱玩爱笑的非典型程序~~~媛

你可能感兴趣的:(PAT_1045 Hello World for U (20))