UVa 1593 Alignment of Code(字符串)

题意  按要求对齐代码

字符串流的应用

#include <bits/stdc++.h>
using namespace std;
const int N = 1005, M = 200;
string s[N][M], line;
int cw[M], cn[N];

int main()
{
    int r = 0, c = 0;
    while(getline(cin, line))
    {
        stringstream ss(line);
        while(ss >> s[r][c])
        {
            if(s[r][c].length() > cw[c])
                cw[c] = s[r][c].length();
            ++c;
        }
        cn[r++] = c;
        c = 0;
    }

    for(int i = 0; i < r; ++i)
    {
        for(int j = 0; j < cn[i] - 1; ++j)
            cout << left << setw(cw[j] + 1) << s[i][j];
        cout << s[i][cn[i] - 1] << endl;
    }
    return 0;
}

1593 - Alignment of Code

You are working in a team that writes Incredibly Customizable Programming Codewriter (ICPC) which is basically a text editor with bells and whistles. You are working on a module that takes a piece
of code containing some definitions or other tabular information and aligns each column on a fixed vertical position, while keeping the resulting code as short as possible, making sure that only whitespaces that are absolutely required stay in the code. So,
that the first words on each line are printed at position p1 = 1; the second words on each line are printed at the minimal possible position p2, such that all first
words end at or before position p2 - 2; the third words on each line are printed at the minimal possible position p3, such that all second words end at or before position p3 -
2, etc.

For the purpose of this problem, the code consists of multiple lines. Each line consists of one or more words separated by spaces. Each word can contain uppercase and lowercase Latin letters, all
ASCII punctuation marks, separators, and other non-whitespace ASCII characters (ASCII codes 33 to 126 inclusive). Whitespace consists of space characters (ASCII code 32).

Input

The input file contains one or more lines of the code up to the end of file. All lines (including the last one) are terminated by a standard end-of-line sequence in the file. Each line contains
at least one word, each word is 1 to 80 characters long (inclusive). Words are separated by one or more spaces. Lines of the code can have both leading and trailing spaces. Each line in the input file is at most 180 characters long. There are at most 1000
lines in the input file.

Output

Write to the output file the reformatted, aligned code that consists of the same number of lines, with the same words in the same order, without trailing and leading spaces, separated by one or
more spaces such that i-th word on each line starts at the same position pi.

Note for the Sample:

The `‘ character in the example below denotes
a space character in the actual files (ASCII code 32).

Sample Input

  start:  integer;    // begins here
stop: integer; //  ends here
 s:  string;
c:   char; // temp

Sample Output

start: integer; // begins here
stop:  integer; // ends   here
s:     string;
c:     char;    // temp
时间: 2024-10-06 10:17:31

UVa 1593 Alignment of Code(字符串)的相关文章

UVa 1593 - Alignment of Code

题目描述 : 输入若干行代码,按照要求格式输出,.各列单词尽量靠左,单词之间至少要一个空格. 思路 : 利用字符串数组找规律.  只要控制好边界其他的都很简单.  连测试用例都没有用,因为UVa网页老刷不出来.直接交代码QuickSubmit,只是担心会超时,但结果令人意外,竟然是AC.再来两道吧.      对了 我又不好意思的用了正则表达式. 代码 : <p>import java.util.*; import java.util.regex.Matcher; import java.ut

UVA 1593: Alignment of Code(模拟 Grade D)

题意: 格式化代码.每个单词对齐,至少隔开一个空格. 思路: 模拟.求出每个单词最大长度,然后按行输出. 代码: #include <cstdio> #include <cstdlib> #include <cstring> char words[1200][190][90]; int maxLen[190]; char tmp[200]; typedef char * pchar; int readStr(pchar &str, char *out) { in

uva 10391 Compound Words (字符串-hash)

Problem E: Compound Words You are to find all the two-word compound words in a dictionary. A two-word compound word is a word in the dictionary that is theconcatenation of exactly two other words in the dictionary. Input Standard input consists of a

UVA 1839 Alignment

还是最长上升子序列... 本题是求队列中任一士兵都能从左边或者右边看到队伍外: 即某一士兵左边为上升子序列,右边为下降子序列.求两个序列和,再用总数减去: 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <algorithm> 5 #define maxn 1005 6 using namespace std; 7 8 double d[maxn]; 9 in

UVA 261 - The Window Property(字符串Hash)

UVA 261 - The Window Property 题目链接 题意:这题题意挺绕的..就是给定一个字符串长度n,扫描长度为k = [1,n],然后每次只能扫描连续k个字符的子串,要求所有扫描中,每次扫描中出现的不同字符串个数都不超过k + 1,那么这个字符串就是window property,如果不是的话,就还要找出下标最小的不符合的位置(就是n次扫描中找最小的) 思路:Hash大法好,长度才100,直接处理出hash,O(n^2)随便搞掉 代码: #include <cstdio>

UVa 1593 (水题 STL) Alignment of Code

话说STL的I/O流用的还真不多,就着这道题熟练一下. 用了两个新函数: cout << std::setw(width[j]);    这个是设置输出宽度的,但是默认是在右侧补充空格 所以就要用cout.setf(ios::left);来设置一下左对齐. 1 #include <iostream> 2 #include <cstdio> 3 #include <sstream> 4 #include <vector> 5 #include &l

poj 3959 Alignment of Code

Description You are working in a team that writes Incredibly Customizable Programming Codewriter (ICPC) which is basically a text editor with bells and whistles. You are working on a module that takes a piece of code containing some definitions or ot

UVA 10941 - Words adjustment(BFS+字符串处理)

UVA 10941 - Words adjustment 题目链接 题意:给定两个字符串,在给定一些单词集合,问能否两个单词后面各添加一些单词,使得两个单词变成相同,问添加单词最少几次,单词要来自单词集合 思路:广搜,记录状态为两个字符串之间差的字符,利用set和string去乱搞..即可 代码: #include <cstdio> #include <cstring> #include <string> #include <iostream> #inclu

UVa 1593代码对齐

原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4468 这道题目的话可以使用iomanip这个头文件 1 #include<iostream> 2 #include<string> 3 #include<sstream> 4 #include<algorithm> 5 #inclu