方法一:
#include<iostream>
#include<cstring>
using namespace std;
char a[1005][1005];
int main(){
int n;
cin >> n;
getchar();
string s;
getline(cin, s);
int len = s.size();
int m = len/n + (len%n == 0 ? 0 : 1);
int cnt = 0, now = m;
memset(a, ' ', sizeof(a));
while(now != 0){
for(int i = 1; i <= n; i++){
if(cnt == len)
break;
a[i][now] = s[cnt++];
}
now--;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++)
printf("%c", a[i][j]);
if(i != n)
cout << endl;
}
return 0;
}
方法二:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
string s;
cin >> n;
getchar();
getline(cin, s);
int col = (s.length() - 1) / n + 1;
vector<vector<char>> v(n, vector<char>(col, ' '));
int index = 0;
for (int j = col - 1; j >= 0; j--)
{
for (int i = 0; i < n; i++)
{
if (index < s.length())
v[i][j] = s[index++];
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < col; j++)
cout << v[i][j];
cout << endl;
}
return 0;
}