PATグレードA-グラフィック印刷タイプ-1031U問題解決のアイデアのためのHelloWorld

1031 Hello World for U(20分)

ここに画像の説明を挿入

アイデア

要件を満たすn1とn2を取得するには、この種の質問で長さの異なる複数の文字列を入力して確認
する必要があります。文字列文字列変更するのは難しく、文字列クラス関数を使用する必要があるため、
別の詳細があります。char文字配列使用するには、char文字配列PATの後にデフォルト設定は「\ 0」であり、自分で封印する必要があります

コード

#include <bits/stdc++.h>
using namespace std;

int main()
{
    
    
    string str;
    cin >> str;
    int len = str.length();
    
    int n1 ,n2;

    for (int i = 3;i<=len;i++) //获得满足要求的n1,n2
    {
    
    
        n2 = i;
        n1 = (len + 2 -n2)/2;
        if(n1<=n2)
        {
    
    
            n2 = len+ 2 - n1*2;
            break;
        }
    }
    
    char out[100] ;
    for(int i=0;i<n1;i++)
    {
    
    
        if(i!=n1-1)
        {
    
    
            out[0]=str[i];
            for(int j =1 ;j< n2-1 ;j++)
            {
    
    
                out[j] = ' ';
            }
            out[n2-1]=str[len-1-i];
            out[n2]='\0';    //PAT后置不默认为'\0',要自己封
            cout<<out<<endl;
        }
        else 
        {
    
    
            for(int j =n1-1 ;j< n1+n2-1 ;j++)
            {
    
    
                out[j-n1+1] = str[j];
            }
            out[n2]='\0';
            cout<<out;
        }
        
    }
    
}

おすすめ

転載: blog.csdn.net/weixin_43999137/article/details/114036893