题意
从右向左竖向排版输出给的字符
思路
- 1.得出行数列数
- 2.从右上开始往下
坑点
- 1.末尾空格
- 2.行列数
#include<bits/stdc++.h>
using namespace std;
char ans[105][1005];
int main()
{
int n,cnt=0;
scanf("%d",&n);
getchar();
string s;
getline(cin,s);
int len=s.length(),sum=0;
int m=(len+n-1)/n;//输出的字符串的列数
for(int j=m-1;j>=0;j--)//从右上角开始
{
for(int i=0;i<n;i++)
{
if(sum<len)
{
ans[i][j]=s[sum];
}else{
ans[i][j]=' ';//当所有数输出完后,剩下的用空格填充
}
sum++;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
printf("%c",ans[i][j]);
}
if(i!=n-1)
{
printf("\n");
}
}
return 0;
}