UVa 1593代码对齐

Posted 谦谦君子,陌上其华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 #include<vector>
 6 #include<iomanip>
 7 using namespace std;
 8 
 9 vector<string> code[1010];
10 int len[185];
11 
12 int main()
13 {
14     //freopen("D:\\in.txt", "r", stdin);
15     int i = 0;
16     string s, buf;
17     while (getline(cin, s))
18     {
19         int t = 0;
20         stringstream ss(s);
21         while (ss >> buf)
22         {
23             len[t] = max((int)buf.length(), len[t]);
24             code[i].push_back(buf);
25             t++;
26         }
27         i++;
28     }
29     cout << setiosflags(ios::left);
30     for (int p = 0; p < i; p++)
31     {
32         int j = 0;
33         for (j; j < code[p].size() - 1; j++)
34         {
35             cout << setw(len[j] + 1) << code[p][j];
36         }
37         cout << code[p][j] << endl;
38     }
39     return 0;
40 }

在这个程序里所运用到的关于iomanip这个头文件的一些知识:

▲setw(n)用法: 通俗地讲就是预设宽度
如 cout<<setw(5)<<255<<endl;
结果是:
(空格)(空格)255
▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充
如 cout<<setfill(‘@‘)<<setw(5)<<255<<endl;
 
▲ setprecision用法
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosflags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
setiosflags(ios::fixed) 固定的浮点显示
setiosflags(ios::scientific) 指数表示
setiosflags(ios::left) 左对齐
setiosflags(ios::right) 右对齐
setiosflags(ios::skipws) 忽略前导空白
setiosflags(ios::uppercase) 16进制数大写输出
setiosflags(ios::lowercase) 16进制小写输出
setiosflags(ios::showpoint) 强制显示小数点
setiosflags(ios::showpos) 强制显示符号
 2016-11-22  23:10:59

以上是关于UVa 1593代码对齐的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Uva1593

UVA 1593 Alignment of Code

UVA 1593 Alignment of Code

左对齐徽章