UVA ~ 1593 ~ Alignment of Code (vector+模拟)

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

思路:每行用一个vector存一下,存的时候维护一下每一列单词长度的最大值。

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1000 + 5;
vector<string> v[MAXN];//每列的单词
int len[200] = {0}, cnt = 0;
int main()
{
    string s;
    while (getline(cin, s))
    {
        stringstream ss(s);
        string t;
        int i = 0;
        while (ss >> t)
        {
            v[cnt].push_back(t);
            len[i] = max(len[i], (int)t.length());
            i++;
        }
        cnt++;
    }
    for (int i = 0; i < cnt; i++)
    {
        int num = 0;
        for(auto it: v[i])
        {
            cout << it;
            int l = len[num] - it.length() + 1;
            if (num == v[i].size() - 1) break;
            for (int j = 0; j < l; j++)
            {
                cout << " ";
            }
            num++;
        }
        cout << endl;
    }
    return 0;
}
/*
  start:  integer;    // begins here
stop: integer; //  ends here
 s:  string;
c:   char; // temp
*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值