题目描述:
给定任意N(> = 5)个字符的字符串,系统会要求您将字符组成U形。例如,“helloworld”可以打印为:
其中要求为:U尽可能地平方 - 也就是说,必须满足n1 =
n3 = max {k | 对于所有3 <= n2 <= N},k <= n2,其中n1 + n2 + n3-2 = N.
输入
一行字符串(长度为5-80)
输出
输出U型字符。
解题思路
因为要求三条边尽可能的平方,且由条件可以看出,且尽可能的使n2最大化。推出规则。
n2 = (n + 2) % 3 + (n + 2) / 3;
n3 = n1 = (n + 2 - n2) / 2;
代码
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main() {
string str;
cin >> str;
int n1, n2, n3,n= str.size();
n2 = (n + 2) % 3 + (n + 2) / 3;
n1 = (n + 2 - n2) / 2;
n3 = n1;
for (int i = 0; i < n1-1; i++) {
cout << str[i];
for (int j = 0; j < n2 - 2; j++) {
cout << " ";
}
cout << str[n - i - 1] << endl;
}
for (int i = n1-1; i < n1 + n2-1; i++) {
cout << str[i];
}
cout << endl;
return 0;
}
我是6J,爱吃爱玩爱笑的非典型程序~~~媛