欢迎访问我的pat甲级题解目录哦https://blog.csdn.net/richenyunqi/article/details/84981078
题目描述
算法设计
蛮简单的一道题,关键在于如何确定n1,n2,n3的大小。假设字符串长度为N,n1,n2,n3需要满足的条件有:
1. n1+n2+n3=N+2
2. n1=n3<=n2且n1,n3应尽可能取最大值
3. 3<=n2<=N
把以上条件综合起来可以得到n1=n3=(N+2)/3向下取整。n1,n2,n3确定以后按规定输出即可。
C++代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string input="";
getline(cin,input);//读取字符串
int n1=(input.size()+2)/3,n2=input.size()+2-2*n1;//获取n1,n2
//进行输出
for(int i=0;i<n1-1;++i){//前n1-1行,需要输出首尾两个字符,且每行字符数为n2
printf("%c",input[i]);
for(int j=0;j<n2-2;++j)
printf(" ");
printf("%c\n",input[input.size()-i-1]);
}
//最后一行将没有输出的n2个字符一次性输出
for(int i=0;i<n2;++i)
printf("%c",input[n1-1+i]);
return 0;
}