解题思路

这道题很明显要找规律,首先要明白,不管显示的字符怎么处理,电脑都只能从左到右,从上到下的打印,所以要找到特殊输出的形式,关键是找到期中的数学规律,即满足的输出形式。
本题给出了行数,所以首先想到的肯定的是根据字符串长度计算列数,然后把输出的内容从左往右,从上往下编号,看看实际中对应的行和列满足什么关系。只要行和列按照传统的输出,从0开始遍历,只要稍微思考一下就能想到两者满足的关系。
本题需要注意的地方是:
1.字符串长度在1000的范围内,我最开始的时候就把字符串空间开小了。
2.在超过字符串长度时,需要判断一下,然后输出空格。
3.注意换行。

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main(){
	int n;
	char str[1005];
	scanf("%d",&n);
	getchar();
	cin.getline(str,1001);
	int len = strlen(str);
	int col = len / n;
	int res = len % n;
	if(res > 0) col++;
	for(int i=0;i<n;i++){
		for(int j=0;j<col;j++){
			if((col-1-j)*n+i >= len) printf(" ");
			else putchar(str[(col-1-j)*n+i]);
		}
		printf("\n");
	}
	return 0;
}