题意
给你字符数量,和一行字符,让你输出与古代排版相同的(即从右向左竖向排版)字符
思路
1.得出行数列数
2.从右上开始往下
坑点
1.末尾空格
代码
#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)//sum<字符长度
{
ans[i][j]=s[sum];//对应位置等于s[sum]
}else{//sum>len
ans[i][j]=' ';//此处是空格
}
sum++;//计数
}
}
for(int i=0;i<n;i++)//hang
{
// reverse(ans[i],ans[i]+cnt);
for(int j=0;j<m;j++)//列
{
printf("%c",ans[i][j]);输出新字符
}
if(i!=n-1)
{
printf("\n");//注意换行
}
}
return 0;
}
总结
理清排版的规律