题解 | #Hello World for U#

Hello World for U

https://www.nowcoder.com/practice/c6e414fddd7c401887c350c9cc41f01b

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main(){
    char arr[100][100];
    char buff[100];//暂存数组
    while(scanf("%s",buff)!=EOF ){
        //读入一整行
    string str = buff;//c->c++
    int n = str.length();
    int n1 , n2 ,n3;//n2为底边元素,n1,n3为左右两边且相等
    n1 = (n+2)/3;//2x+y -2 <=n --> x最大为 x < = (n-2)/3
    n2 = (n+2) - 2*n1;
    n3 = n1;
    for(int i = 0 ; i<n1;i++){//要画图的区域都先填成' '
        for(int j = 0 ; j<n2;++j){
            arr[i][j] = ' ';
        }
        arr[i][n2] = '\0';
    }
    for(int i = 0 ; i < n1-1 ; ++i){
        arr[i][0] = str[i];//左边
        arr[i][n2-1] = str[n-i-1];//右边
    }
    for(int i = n1-1,j = 0 ; j< n2;++j){
            arr[i][j] = str[j+n1-1];//底层
        }
    
    for(int i = 0; i<n1;++i){//输出图形
           printf("%s\n",arr[i]);
       }


}}

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务