加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

PAT Advanced 1031 Hello World for U (20 分)

发布时间:2020-12-15 05:29:47 所属栏目:Java 来源:网络整理
导读:Given any string of? N?( ≥) characters,you are asked to form the characters into the shape of? U . For example,? helloworld ?can be printed as: h de ll rlowo That is,the characters must be printed in the original order,starting top-down f

Given any string of?N?(≥) characters,you are asked to form the characters into the shape of?U. For example,?helloworld?can be printed as:

h  d
e  l
l  r
lowo

That is,the characters must be printed in the original order,starting top-down from the left vertical line with?n?1???characters,then left to right along the bottom line with?n?2???characters,and finally bottom-up along the vertical line with?n?3???characters. And more,we would like?U?to be as squared as possible -- that is,it must be satisfied that?n?1??=n?3??=max?{?k?|?kn?2???for all?3?} with?n?1??+n?2??+n?3???2=N.

Input Specification:

Each input file contains one test case. Each case contains one string with no less than 5 and no more than 80 characters in a line. The string contains no white space.

Output Specification:

For each test case,print the input string in the shape of U as specified in the description.

Sample Input:

helloworld!

Sample Output:





h ! e d l l lowor
#include <iostream>
using namespace std;
int main()
{
    /**读题
    n1,n2,n3
    n1=n3=height
    n2=width
    height=max(k|k<=width,3<=width<=N)
    2*height+width-2=N
    尽可能方形
    */
    string s;
    cin>>s;
    int N=s.length(),width,height,left=0,right=N-1;
    for(int i=1;;i++){
        if(3*i-2>N){
            height=i-1;
            width=N+2-2*height;
            break;
        }
    }
    for(int j=0;j<height;j++){
        if(j!=height-1){
            cout<<s[left];
            for(int i=0;i<width-2;i++) cout<<" ";
            cout<<s[right]<<endl;
            left++;right--;
        }else{
            for(int i=left;i<=right;i++){
                cout<<s[i];
            }
        }
    }
    system("pause");
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读