UVA1593 算法竞赛入门经典(第二版)第五章STL 习题5-1 代码对齐
题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4468
说明:由于没学C++,STL这块也一直不会,半个月前就不敢做STL的题,这半个多月学习了一下栈、链表、map、string、vector、set等等,终于做了一下,AC了。
#include<stdio.h>
#include<iostream>
#include<vector>
#include<string>
#include<sstream>
using namespace std;
int main(){
string s,buf;
vector<string> p[1100];
int maxn[1220]={0};//maxn数组代表每行的第i个单词最大的长度
int line=0;//line代表第几行
while(getline(cin,s)){
stringstream ss(s);
int i=0;//i代表第几个单词
while(ss>>buf){
p[line].push_back(buf);
if(buf.length()>maxn[i])
maxn[i]=buf.length();
i++;
}
line++;
//if(s=="0") break;//用于本地测试
}
for(int k=0;k<line;k++){
int flag=1;
for(int i=0;i<p[k].size();i++){
if(flag) flag=0;else cout <<" ";//输出俩个单词间的空格
cout<<p[k][i];
if(i+1!=p[k].size())//每行尾部不能有空格,WA了一次
for(int j=0;j<maxn[i]-p[k][i].length();j++)
cout<<" ";
}
cout <<"\n";
}
return 0;
}