题目链接:https://cn.vjudge.net/problem/UVA-1593#author=0
题目大意:输入若干行代码,要求各列单词的左边界对齐且尽量靠左。单词之间至少一个空格。
分析:开个数组保存每列单词最长长度,输出每列长度为最长长度加一个空格。注意本题卡最后一个空格,不要输出最后一个空格。
代码:
#include <bits/stdc++.h>
using namespace std;
void Print(int n) {
for(int i = 0; i < n; i++)
cout << " ";
}
int main() {
freopen("i.txt", "r", stdin);
string str,t;
int cnt = 0, cnt2;
vector<string > v1[1010];
int mlen[1010];
while(getline(cin, str)) {
cnt2 = 0;
stringstream s(str);
while(s>>t) {
v1[cnt].push_back(t);
mlen[cnt2] = max(mlen[cnt2], (int)t.length());
cnt2++;
}
cnt++;
}
for(int i = 0, j; i < cnt; i++) {
for(j = 0; j < v1[i].size()-1; j++) {
cout << v1[i][j] << " ";
Print(mlen[j]-v1[i][j].length());
}
cout << v1[i][j] << endl;
}
return 0;
}