STL —— UVa 1593 Alignment of Code

简述   : 输入若干行列的  单词矩阵, 单词中间有不定量的空格,要求输出的单词矩阵每列对其

              觉得可以分为 录入 输出两大块,录入每行不定长的单词,可以用向量数组,中间有过多的空格,使用 stringstream ss 

   l

数据容器 :向量数组   vector <string> line[maxn];     并开标记数组,用于每行最大单词数

 1 #include<bits/bits/stdc++.h>
 2 
 3 using namespace std
 4 const int maxn 10000;
 5 int  main(){
 6    vector <string> lines[maxn];      //不定长数组
 7    int row = 0;           // 定义了行(row),下面循环要按行录入到lines中
 8    int colmark[maxn]; //每列最大标记
 9    memset(colmark,0,maxn);//将colmark数组清空都为0
string oneline;            // 利用stringstream的截断特点      
    while(getline(cin,oneline)){  //按行录入
        string temp;
        int col=0 ;
        vector <string> line;
        stringstream ss(oneline);
        while(ss >> temp){
              int len = temp.size();
              colmark[col] = max(len,colmark[col]); //每列最大数
              col++;
              line.push_back(temp);
        }
           lines[row++] = line;

}

输出

 1  for(int k = 0; k <= row; k++)     //输出每行的
 2     {
 3         int i;
 4         for( i = 0; i  < lines[k].size()-1;  i++)//输出除最后一列的单词
 5         {
 6             cout<<lines[k][i]<<" ";
 7             for(int j=0;j<colmark[i]-lines[k][i].size();j++ )//用空格来补齐
 8                 cout<<" ";
 9         }
10         cout<<lines[k][i];
11         cout<<endl;
12 
13     }
14     return 0;
15 }

猜你喜欢

转载自www.cnblogs.com/TigerDZ/p/10458512.html