将我们从terminal cin的各行代码,assume成一个2d matrix,用row和col分别记录最大列数,最大行数(as follows : row=4,col=5)
start: | integer; | // | begins | here |
stop: | integer; | // | ends | here |
s: | string; | |||
c: | char; | // | temp |
Input format is:?(Note:Terminate with '#' input)
-------------------------------------------------
start: integer; // begins here
stop: integer; // ends here
s: string;
c: char; // temp
#
-------------------------------------------------
Input format is:?
-------------------------------------------------
start: integer; // begins here
stop: integer; // ends here
s: string;
c: char; // temp
-------------------------------------------------
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn = 1010;
// 如果申明的是全局/静态数组,系统会把数组的内容自动初始化为0。
int each_col_max_len[maxn];//用一个数组记录,每个列最长元素长度
vector<string> words[maxn];
void print(const string &s, int len, char extra){
cout << s;
for (int i = 0; i < len-s.length()+1; ++i) {
cout << extra;
}
}
int main(){
int row=0,col=0;
string s ,x;
while (getline(cin,s)) {
// if (s[0] == '#') break;//提交时记得注释掉这一行
stringstream ss(s);
while (ss >> x) words[row].push_back(x);//往里边输入的时候最好用x,好理解
col = max(col,(int)words[row].size());//返回想象成矩阵,最大列数
row++;
}
for (int i = 0; i < row ; ++i) {
for (int j = 0; j < words[i].size(); ++j) {
//用一个数组记录,每个列最长元素长度
each_col_max_len[j] = max(each_col_max_len[j], (int)words[i][j].length());
}
}
for (int i = 0; i < row ; ++i) {
for (int j = 0; j < words[i].size(); ++j) {
if (j == (int)words[i].size() - 1) cout << words[i][j];//某一行最后一列,直接输出
else print(words[i][j],each_col_max_len[j],' ');
}
cout << endl;
}
return 0;
}