简单二维数组模拟
注意刚开始二维数组全部初始化为空格
#include<bits/stdc++.h>
#define inf 99999999
#define ll long long
using namespace std;
char a[90][90];
int main()
{
string s;
cin>>s;
int len=s.length();
int colu=-1,row;
for(int i=len;i>=3;i--) //遍历底层个数
{
for(int j=1;j<=len;j++) //遍历旁边两层个数
{
if(i+j+j==len+2) //满足条件的
{
if(j>colu && j<=i) //找到横竖个数相差最小时的
{
colu=j;
row=i;
}
}
}
}
for(int i=0;i<=90;i++) //刚开始全部初始化为空格,不加此步一分不得
{
for(int j=0;j<=90;j++)
a[i][j]=' ';
}
int w=colu,k=0;
for(int i=1;i<=w;i++)
a[i][1]=s[k++];
k--;
for(int i=1;i<=row;i++)
a[w][i]=s[k++];
k--;
for(int i=w;i>=1;i--)
a[i][row]=s[k++];
for(int i=1;i<=w;i++)
{
for(int j=1;j<=row;j++)
cout<<a[i][j];
if(i!=w)
cout<<endl;
}
return 0;
}