1031. 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
题目大意:用所给字符串按U型输出。n1和n3是左右两条竖线从上到下的字符个数,n2是底部横线从左到右的字符个数。
要求:
1. n1 == n3
2. n2 >= n1
3. n1为在满足上述条件的情况下的最大值
PS:感谢github用户 @fs19910227 提供的pull request~
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); final char[] chars = reader.readLine().toCharArray(); final int length = chars.length + 2; final int rows = length / 3; final int columns = length / 3 + length % 3; final char[][] table = new char[rows][columns]; int index = 0; //left for (int i = 0; i < rows; i++, index++) { table[i][0] = chars[index]; } //bottom for (int i = 1; i < columns - 1; i++, index++) { table[rows - 1][i] = chars[index]; } //right for (int i = rows - 1; i >= 0; i--, index++) { table[i][columns - 1] = chars[index]; } for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { char c = table[i][j] == 0 ? ' ' : table[i][j]; System.out.printf("%c", c); if (j == columns - 1) { System.out.println(); } } } } }
(随着网站访问量的激增,服务器配置只得一再升级以维持网站不“404 Not Found”,所以网站的维护费用也在不断上涨……(目前的阿里云服务器ECS+云数据库RDS+域名购买+七牛云的费用是2200元/年),为了能不放弃该网站,所以我又把打赏链接放上来啦~所有打赏金额都会被记账并投入博客维护中,感谢厚爱,多多关照~)