题目传送门:https://pintia.cn/problem-sets/994805046380707840/problems/994805091888906240
题目描述
思路
用一个二维数组,将所给的字符串按照规定排序,按照要求输出即可。需要注意的是,本题的行数是固定的,列数是变化的。如果长度不是正好满足行数的话,要补上相应的空格。
AC代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
static char a[105][105];
int n=0;
cin>>n;
getchar();
string s;
getline(cin,s);
int temp=0;
int tt=0;
if(s.length()%n!=0)
{
temp = s.length()/n+1;
tt=temp*n-s.length();//tt是最后补的空格的数量
}
else
temp = s.length()/n;
//temp是有多少列
for(int i=n-1,j=tt;i>=0,j>=0;i--,j--)
{
a[i][0] = ' ';
}
int hang=n-1-tt;
int lie=0;
for(int i=s.length()-1;i>=0;i--)
{
a[hang][lie]=s[i];
hang--;
if(hang==-1)
{
hang=n-1;
lie++;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<lie;j++)
{
printf("%c",a[i][j]);
}
cout<<endl;
}
return 0;
}