0
点赞
收藏
分享

微信扫一扫

PAT-1031 Hello World for U

在觉 2022-02-07 阅读 65
c++

1031 Hello World for U

自己解法

  • 注意字符数组的初始化,如果不是用memset初始化,而是使用char c[30][30] = {’ '}的话,PAT测试会报错
#include <iostream>
using namespace std;
#include <string.h>

int main()
{
    string s;
    cin >> s;
    int N = s.length();
    int n1 = (N + 2) / 3;
    int n3 = n1, n2 = (N + 2) - 2 * n1;
    char c[30][30];
    memset(c, ' ', sizeof(c));
    int i = 0;
    for (int j = 0; j < n1; j++)
    {
        c[j][0] = s[i];
        i++;
    }
    for (int j = 1; j < n2 - 1; j++)
    {
        c[n1 - 1][j] = s[i];
        i++;
    }
    for (int j = n3 - 1; j >= 0; j--)
    {
        c[j][n2 - 1] = s[i];
        i++;
    }
    for (int i = 0; i < n1; i++)
    {
        for (int j = 0; j < n2; j++)
            cout << c[i][j];
        cout << endl;
    }

    system("pause");
    return 0;
}

大神解法

  • 柳神
#include <iostream>
#include <string.h>
using namespace std;
int main() {
    char c[81], u[30][30];
    memset(u, ' ', sizeof(u));
    scanf("%s", c);
    int n = strlen(c) + 2;
    int n1 = n / 3, n2 = n / 3 + n % 3, index = 0;
    for(int i = 0; i < n1; i++) u[i][0] = c[index++];
    for(int i = 1; i <= n2 - 2; i++) u[n1-1][i] = c[index++];
    for(int i = n1 - 1; i >= 0; i--) u[i][n2-1] = c[index++];
    for(int i = 0; i < n1; i++) {
        for(int j = 0; j < n2; j++) 
            printf("%c", u[i][j]);
        printf("\n");
    }
    return 0;
}
举报

相关推荐

0 条评论