UVA 1593 Alignment of Code

Posted jaszzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA 1593 Alignment of Code相关的知识,希望对你有一定的参考价值。

题意:

给出若干行字符串和 空格,输出:
开头,结尾都没有空格;每一行 两个字符串之间最少有一个空格,每一列字符串 左对齐。

 

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring> // for memset
#include <vector> // vector<int>().swap(v);
#include <set> // multiset set<int,greater<int>> //big->small
#include <map>
#include <stack> // top()
#include <queue> // front() // priority_queue<T,vector<T>,greater<T> >
#include <cmath> // auto &Name : STLName  Name.
#include <utility>
#include <sstream>
#include <string> // __builtin_popcount (ans); // 获取某个数二进制位1的个数
#include <iomanip> 
#include <cstdlib> // rand()

#define IOS ios_base::sync_with_stdio(0); cin.tie(0)
#define lowbit(x) (x&(-x))
using namespace std;
typedef long long ll;

const double PI=acos(-1.0);
const int INF = 0x3f3f3f3f;
const int MAX_N = 1e3 + 400;
const int MOD = 1000000007;

string s,st;
vector<string> lines[MAX_N];
int row=0;
int maxcol[MAX_N];

int main(void)
{
    while (getline(cin ,s)) {
        stringstream input(s);
        while (input >>st) { // 空格分割
            maxcol[lines[row].size()] = max(maxcol[lines[row].size()], (int)st.size()); 
            lines[row].push_back(st); // 保存单词
        }
        row ++;
    }
    for (int i = 0; i < row; i ++) {
        for (int j = 0; j < lines[i].size(); j ++) {
            st = lines[i][j]; 
            if (j != lines[i].size()-1) st += string(maxcol[j]-st.size()+1,  ); // 补空格
            printf("%s", st.c_str());
        }
        puts("");
    }

    return 0;
}

 

  

以上是关于UVA 1593 Alignment of Code的主要内容,如果未能解决你的问题,请参考以下文章

代码对齐 (Alignment of Code,ACM/ICPC NEERC 2010,UVa1593)

Uva1593

UVa 1593代码对齐

UVa 1593 代码对齐

算法习题---5.1代码对齐(UVa1593)

Codeforces1593 D2. Half of Same(随机)