[UVa 1593] Alignment of Code 代码对齐

题意简述:输入若干行代码,要求各列单词的左边界对齐且尽量靠左。单词之间至少要空一格。每个单词不超过80个字符,每行不超过180个字符,一共最多1000行。
code

#include<bits/stdc++.h>
using namespace std;
int Max[200];
vector<string> s[1010];
int read(){
    int x=0,f=1;char ch=getchar();
    for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
    for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<1)+(x<<3)+ch-'0';
    return x*f;
}
int main(){
	int n=0;string ss,buf;
	while(getline(cin,ss)){
		int t=0;
		stringstream S(ss);
		while(S>>buf){
			Max[t]=max((int)buf.length(),Max[t]);//将每一列的长度
			//最长的单词大小保存下来 
			s[n].push_back(buf);//将当前的单词加入向量中储存 
			t++;
		}
		n++;
	}
	cout<<setiosflags(ios::left);//将输出格式定义为左对齐输出 
	for(int i=0;i<n;i++){
		int j=0;
		for(j;j<s[i].size()-1;j++)
			cout<<setw(Max[j]+1)<<s[i][j];//setw()将括号里的
			//参数的大小
			//作为输出的值占的位置大小 
		cout<<s[i][j]<<endl;
	}
	return 0;
}
posted @ 2018-03-12 21:15  Luvwgyx  阅读(351)  评论(0)    收藏  举报