zoukankan      html  css  js  c++  java
  • Hello World for U (20)

    Given any string of N (>=5) 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 n1 characters, then left to right along the bottom line with n2 characters, and finally bottom-up along the vertical line with n3 characters. And more, we would like U to be as squared as possible -- that is, it must be satisfied that n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 - 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

      1 #include <iostream>
      2 
      3 #include <string>
      4 
      5 using namespace std;
      6 
      7  
      8 
      9 int main()
     10 
     11 {
     12 
     13  
     14 
     15       string ss;
     16 
     17       while(cin>>ss)
     18 
     19       {
     20 
     21          int x,y;
     22 
     23        bool u=false;
     24 
     25          for(x=ss.length();x>=1;x--)
     26 
     27          {
     28 
     29              if(x<3)
     30 
     31                {
     32 
     33                      for(y=3;y<=ss.length();y++)
     34 
     35                            if(2*x+y-2==ss.length())
     36 
     37                            {
     38 
     39                               u=true;
     40 
     41                                 break;
     42 
     43                            }
     44 
     45                }
     46 
     47                   else
     48 
     49                   {
     50 
     51                         for(y=x;y<=ss.length();y++)
     52 
     53                            if(2*x+y-2==ss.length())
     54 
     55                            {
     56 
     57                               u=true;
     58 
     59                                 break;
     60 
     61                            }
     62 
     63  
     64 
     65                   }
     66 
     67               if(u)  break;
     68 
     69  
     70 
     71          }
     72 
     73  
     74 
     75  
     76 
     77          int i=0;int j=ss.length()-1;int k;
     78 
     79        int tem=x-1;
     80 
     81          while(tem--)
     82 
     83          {
     84 
     85             cout<<ss[i++];
     86 
     87               for(k=0;k<y-2;k++)  cout<<" ";
     88 
     89           cout<<ss[j--];
     90 
     91               cout<<endl;
     92 
     93          }
     94 
     95  
     96 
     97          for(k=i;k<=j;k++)
     98 
     99                cout<<ss[k];
    100 
    101          cout<<endl;
    102 
    103       }
    104 
    105   return 0;
    106 
    107 }
    View Code
  • 相关阅读:
    QT启动画面不显示
    指针运算,终于明白了
    sourceforge 优秀 开源 项目 介绍
    ios验证邮箱格式
    获取手机当前经纬度的方法
    将UIImageView改成圆角和圆形
    Extensible Messaging and Presence Protocol (XMPP) 的实现
    导入libxml2.dylib时出问题
    Extensible Messaging and Presence Protocol (XMPP) 简介
    XMPPFramework 常用api包简介
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4249341.html
Copyright © 2011-2022 走看看