刚看到这道题的时候,我的思路是分行逐个字符读入进行判断。但是这样写完之后发现没有退出循环的条件。之后换了方法,采用字符串流输入,成功解决。
题目链接:UVa 1593
AC代码:
#include <iostream>
#include <sstream>
using namespace std;
const int maxn = 2000;
int num[maxn], cnt[maxn];
string word[maxn][maxn];
int main() {
string line;
int c,r = 0;
while (getline(cin, line)) {
c = 0;
stringstream ss(line);
while (ss >> word[r][c]) {
if (word[r][c].length()+1 > num[c])
num[c] = word[r][c].length()+1; //每行都按照最长的行的格式来
c++;
}
cnt[r++] = c;
}
for (int i = 0; i < r; i++) {
for (int j = 0; j < cnt[i]-1; j++) {
cout << word[i][j];
for (int k = word[i][j].length(); k < num[j]; k++) {
cout << " ";
}
}
cout << word[i][cnt[i] - 1];
cout << endl;
}
return 0;
}