AC代码
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
char str[1000];
cin>>str;
int len=strlen(str);
int a=len/3;
// int b=len-2*a
int b=len-2*a;
// cout<<"len="<<len<<endl;
// cout<<"a="<<a<<endl;
// cout<<"b="<<b<<endl;
char a1[a],a2[a],b0[b];
for(int i=0;i<a;i++) {
a1[i]=str[i];
}
for(int i=0;i<b;i++) {
b0[i]=str[a+i];
}
for(int i=0;i<a;i++) {
a2[i]=str[a+b+i];
}
// cout<<"a1="<<endl;
// for(int k=0;k<a;k++) {
// cout<<a1[k];
// }
// cout<<endl;
// cout<<"b0="<<endl;
// for(int k=0;k<b;k++) {
// cout<<b0[k];
// }
// cout<<endl;
// cout<<"a2="<<endl;
// for(int k=0;k<a;k++) {
// cout<<a2[k];
// }
//
// cout<<endl;
// cout<<endl;
int flag=(a==b);
int blen;
if(flag) {
blen=b+2;
} else {
blen=b;
}
for(int i=0;i<a;i++) {
for(int j=0;j<blen;j++) {
if(j==0) {
cout<<a1[i];
} else if(j==blen-1) {
cout<<a2[a-1-i];
} else if(flag&&(i==a-1)){
cout<<b0[j-1];
} else {
cout<<' ';
}
}
cout<<endl;
}
if(flag==0) {
for(int j=0;j<b;j++) {
cout<<b0[j];
}
}
}
测试思路
写U只有两种情况:
- 三边相等
画出来应该长这样
1 3
2 2
31231
- 横边大于竖边(可能大1或者2)
大1
1 3
2 2
3 1
1234
大2
1 3
2 2
3 1
12345
测试数据
123123123
1231234123
12312345123