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

Posted ssyfj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法习题---5.1代码对齐(UVa1593)相关的知识,希望对你有一定的参考价值。

一:题目

将不规范的若干行代码进行对齐。对齐按照最长字符串进行操作。见样例输入

(一)样例输入

??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   
按照每列最长字符串空一格对齐

二:代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <sstream>

#define MAX_LINES 1000
#define MAX_LEN 180

using namespace std;

int main()

    FILE* fp = freopen("data5_1_h.in", "r", stdin);
    freopen("data5_1_h.out", "w", stdout);
    //收集代码信息
    int n = 0;
    string code,single_c;
    vector<string> codes[MAX_LINES];
    int code_max_len[MAX_LEN] =  0 ;

    //进行信息获取
    while (!feof(fp))
    
        getline(cin, code);
        stringstream ss(code);
        int i = 0;

        while (ss>>single_c)
        
            codes[n].push_back(single_c);
            code_max_len[i] > single_c.length() ? i++ : code_max_len[i++] = single_c.length() + 1;
        
        n++;
    

    //进行信息打印
    for (int i = 0; i <= n; i++)
    
        int j = 0;
        for (vector<string>::iterator it = codes[i].begin(); it != codes[i].end(); it++,j++)
        
            cout << setw(code_max_len[j])<<setiosflags(ios::left)<< *it;
        
        cout << endl;
    
    freopen("CON", "r", stdin);
    freopen("CON", "w", stdout);
    return 0;

 

以上是关于算法习题---5.1代码对齐(UVa1593)的主要内容,如果未能解决你的问题,请参考以下文章

UVa 1593 代码对齐

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

Uva1593

UVA 1593 Alignment of Code

UVA 1593 Alignment of Code

算法习题---4-5IP网络(Uva1590)