UVA - 1593 Alignment of Code(熟练c++操作)

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4468

题意:所有单词都左对齐而且每个单词之间至少要空一格,注意每行最后一个单词最后不要空格。

思路:尽量使用c++的操作,主要是两个需要注意,一个就是直接用vector<stirng>来储存整个表,这样就不需要关心每行有多少个单词,第二个就是每列单词的最大长度,直接用一个数组来存,接下来的代码对齐就直接用setioflags和setw来解决,具体可以百度了解这两个的用法。

代码:

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
using namespace std;
typedef long long LL;
typedef pair<int, int> P;
const int maxn = 1e3 + 5;

vector<string>s[maxn];
int len[200];
int main (){
    string line,buf;
    int i=0,j=0;
    while (getline(cin,line)){
        stringstream ss;
        ss<<line;
        while (ss>>buf){
            len[j]=max(len[j],(int)buf.length());
            s[i].push_back(buf);
            j++;
        }
        i++;j=0;
    }
    cout<<setiosflags(ios::left);
    for (int k=0;k<i;k++){
        for (int l=0;l<s[k].size()-1;l++){
            cout<<setw(len[l]+1)<<s[k][l];
        }
        cout<<s[k][s[k].size()-1]<<endl;
    }
    return 0;
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值