PAT(Advanced)1031 Hello World for U C++实现

PAT(Advanced)1031 Hello World for U C++实现

题目链接

1031 Hello World for U

算法思路

模拟题,根据题意左边和右边列的字符最大数量小于等于最后一行的字符个数,计算左边和右边的列中有几个字符,依次打印即可

n1 = str.length() / 3;
n2 = str.length() - n1 * 2;
while (n2 + 2 > n1) {
     
    n2 -= 2;
    n1++;
}
if (n2 + 2 < n1) {
     
    n2 += 2;
    n1--;
}

AC代码

/*
author : eclipse
email  : [email protected]
time   : Fri Oct 09 08:59:35 2020
*/
#include 
using namespace std;

int main(int argc, char const *argv[]) {
     
    string str;
    cin >> str;
    int n1, n2;
    n1 = str.length() / 3;
    n2 = str.length() - n1 * 2;
    while (n2 + 2 > n1) {
     
        n2 -= 2;
        n1++;
    }
    if (n2 + 2 < n1) {
     
        n2 += 2;
        n1--;
    }
    int index = 0;
    for (int i = 0; i < n1; i++) {
     
        printf("%c", str[index]);
        for (int j = 0; j < n2; j++) {
     
            printf("%c", i == n1 - 1 ? str[n1 + j] : ' ');
        }
        printf("%c", str[str.length() - 1 - index]);
        index++;
        printf("\n");
    }
    return 0;
}

样例输入

helloworld!

样例输出

h   !
e   d
l   l
lowor

鸣谢

PAT

最后

  • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解!

你可能感兴趣的:(数据结构与算法,算法,数据结构)