L1-039. 古风排版

L1-039. 古风排版

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:

按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)

输入样例:
4
This is a test case
输出样例:
asa T
st ih
e tsi
 ce s

题解:这个题目,我在赛场上和我回来时候补题的时候感觉想的是一样的啊。。。怎么就没过呢!
就是先默认初始化为空格(空格和没有字符是两码事。。。空格也是一个字符,所以尽管看起来答案是一样的但是在后面评测的时候会判断为不一样的结果)...
初始化一个字符矩阵,从矩阵的最后一列开始赋值,然后向前就好了。
#include<bits/stdc++.h>
using namespace std;
char a[1000][1000], s[1000];

int main(){
    int n;
    cin>>n;
    getchar();
    gets(s);
    int l=strlen(s), len;
    if(l%n!=0) len=l/n+1;
    else len=l/n;
    for(int i=0; i<n; i++){
        for(int j=0; j<len; j++){
            a[i][j]=' ';
        }
    }
    int cnt=0;
    for(int i=len-1; i>=0; i--){
        if(cnt>=l)    break;
        for(int j=0; j<n; j++){
            if(cnt>=l) break;
            a[j][i]=s[cnt++];
        }
    }
    for(int i=0; i<n; i++){
        for(int j=0; j<len; j++)
         cout<<a[i][j];
        cout<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/ledoc/p/6651071.html