简述 : 输入若干行列的 单词矩阵, 单词中间有不定量的空格,要求输出的单词矩阵每列对其
觉得可以分为 录入 输出两大块,录入每行不定长的单词,可以用向量数组,中间有过多的空格,使用 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 }