uva1593 Alignment of Code 习题5-1 战胜心魔觅自我!

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;
}


你可能感兴趣的:(uva1593 Alignment of Code 习题5-1 战胜心魔觅自我!)