您的位置:首页 > 其它

UVa——1593Alignment of Code(string重定向+vector数组)

2016-03-03 08:35 399 查看
UVA - 1593

Alignment of Code

Time Limit: 3000MSMemory Limit: Unknown64bit IO Format: %lld & %llu
Submit

Status

Description




题意:输入数行数据,一行数据多个短字符串,输出要按照每列最长的占位进行输出。
下面是具体显示效果(为了看清楚具体输出我把空格换成了"|")

输入:

--------------------------------------------

start:  integer;    // begins here
stop: integer; //  ends here
s:  string;
c:   char; // temp


输出:

--------------------------------------------

start:|integer;|//|begins|here
stop: |integer;|//|ends  |here
s:    |string;
c:    |char;   |//|temp


代码:

#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
#include<cstdio>
#include<set>
#include<sstream>
#include<map>
#include<vector>
#include<iomanip>
using namespace std;
static int len[50];//记录每列字符串的最大长度
int main(void)
{
string s,one;
vector<string>list[1001];//每一个vector都是一个数组,类似于可变长的二维数组
vector<string>::iterator it;
int hang=0,lie,maxlen=0;
while (getline(cin,s))
{
lie=0;
istringstream sin(s);//重定向
while (sin>>one)
{
list[hang].push_back(one);//加入到自己所在行
len[lie]=max(len[lie],(int)one.size());//每列的最大长度
lie++;//列数更新
}
hang++;//行数更新
}
for (int i=0; i<hang; i++)
{
for (int j=0; j<list[i].size(); j++)
{
if(j!=list[i].size()-1)
cout<<left<<setw(len[j])<<list[i][j]<<" ";//输出占位+一个空格
else
cout<<left<<list[i][j]<<endl;//输出占位不加空格
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: