题意:

输入若干行代码,要求各列单词的左边界对齐且尽量靠左,单词之间至少要空一格,每个单词不超过80个字符,每行不超过180个字符,一共最多1000行。

思路:

1、输入内容存入二维数组
2、找出每列最长的单词做域宽
3、按域宽输出单词。

注意点:

这道题本质就是在考get型函数处理输入+按域宽和左对齐输出。
1、读取输入内容有两种方法:getline()逐行读取后用stringstream分割,或getchar()逐个读取后靠判断是否为空格分割。个人更倾向第一种。
2、在读取的同时就要求出每列最长单词的大小,方便且高效。这种方法叫做在线处理。
3、每行末尾无空格,在输出时判断一下就OK。
4、求域宽和左对齐采用的是#include<iomanop>头文件中的setw()函数和setiosflags()函数。


题目(提交)链接→UVa-1593


代码:

#include<bits/stdc++.h>
using namespace std;
string s, st;
vector<string> lines[1010];           //每一行的单词
int row = 0, maxcol[1010] = {0};  //行号、每列单词最长值
int main() {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++)    //j是否为最后一列,是则直接输出,否则填充空格左对齐。 j==(lines[i].size()-1) ? cout << lines[i][j] : cout << setw(maxcol[j]+1) << setiosflags(ios::left) << lines[i][j];cout << "\n"; } return 0;
}

收获:

1、巩固了getline()用法
2、巩固了在线处理算法,应用更加熟练。


日拱一卒,功不唐捐。

21行代码AC——习题5-1 代码对齐(Alignment of Code, UVa1593)——解题报告相关推荐

  1. 28行代码AC——习题3-12 浮点数(UVA 11809 - Floating-Point Numbers)——解题报告

    励志用少的代码做高效的表达 题目(提交)链接→UVA-11809 算是个数学题吧,虽然在AOAPC上面给放到象征水题的第三章里面了. 这个题基本就是帮着你复习了一遍浮点数的存储方式了.浮点数在计算机里 ...

  2. 11行代码AC——习题2-4 子序列的和(subsequence)——解题报告

    励志用尽量少的代码做高效的表达. 题目描述: 输入两个正整数n<m<106,输出1/(n²)+1/((n+1)²)+--+1/(m²),保留5位小数.输入包含多组数据,结束标记为n=m=0 ...

  3. 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告

    励志用尽量少的代码做高效的表达. 以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数. 输入格式: 输入二叉树的先序序列. 提示:一棵二叉树的先序序列是一个字符串,若字符是'#',表示该二叉树是空 ...

  4. 16行代码AC——例题6-4破损的键盘(Broken Keyboard,UVa 11988)——解题报告

    励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-11988 题目大意: 输入一个字符串,输出在原本应该是怎么样的? 具体方法是: 若读取到'[', 则执行Home键:将光标移到行首. 若读 ...

  5. 比紫书优化,14行代码AC——例题 5-7 丑数(Ugly Numbers,UVa 136)——解题报告

    题意: 丑数是一些因子只有2,3,5的数.数列1,2,3,4,5,6,8,9,10,12,15--写出了从小到大的前11个丑数,1属于丑数.现在请你编写程序,找出第1500个丑数是什么. 没有输入 输 ...

  6. 21行代码AC——习题3-7 DNA序列(UVa-1368)_解题报告

    励志用尽量少的代码做高效表达. 题目(提交)链接→UVa-1368 思路: DNA序列:按列遍历,记录每一列出现次数最多(若同样多,则字典序最小)的字母,录入s串累加. 距离:重新遍历,录入出现次数比 ...

  7. 22行代码AC——习题5-6 对称轴(Symmetry,UVa1595)——解题报告

    励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-1595 思路: 此题本质是一道笛卡尔坐标系上的对称性问题. 判定性问题:由于只要能判别图像是否左右对称即可,无需确认关于哪条垂直线对称,那 ...

  8. 15行代码AC——习题3-3 数数字 (UVa1225,Digit Counting)

    大意: 把n(n<=10000)个整数顺序写在一起,求0~9分别出现多少次 Sample Input 2 3 13 Sample Output 0 1 1 1 0 0 0 0 0 0 1 6 2 ...

  9. 26行代码AC——习题3-2 分子量 (UVa1586,Molar Mass)——解题报告

    大意: 给出分子式,式中只包含以下四种元素.求分子量. C:12.01 H: 1.008 O: 16.00 N: 14.01 Sample Input 4 C C6H5OH NH2CH2COOH C1 ...

最新文章

  1. 「OKR 理论篇」5 分钟快速掌握 OKR 管理法
  2. 2014-2015-1学期使用的教材
  3. MapReduce-Reduce端join操作-步骤分析
  4. MapServer WinForm开发成功
  5. linux 复用寄存器,I/O多路复用一些概念
  6. 微软拿下美国国防部100亿美元云合同,亚马逊不干了...
  7. LVS详解(四)——LVS安装与配置命令
  8. super-smack
  9. zk4android,zk4 复刻实战有感
  10. MD5文件如何解密zip文件
  11. 32位操作系统电脑上的打印机如何共享给64位操作系统的电脑想要使用_hudingyin_新浪博客
  12. 论一个女程序员的自我修养
  13. 解决Vscode使用LeetCode报错Failed to test the solution. Please open the output channel for details.
  14. python加载图片的方法_python实现读取并显示图片的两种方法
  15. 公众号自动回复不生效php,php,微信公众平台开发者_微信公众号开发者自动回复设置没反应,php,微信公众平台开发者 - phpStudy...
  16. 微信小程序使用键盘搜索功能
  17. thunderbird 日历
  18. 无机化学(第四版)(上册、下册)课后答案 宋天佑 徐家宁 程功臻 王莉版答案解析 高等教育出版社 第5章课后题答案 习题解答
  19. MATLAB中stairs函数使用
  20. 【XMR】/usr/bin/ld: 找不到 -lstdc++

热门文章

  1. 手把手教你拦截Linux系统调用
  2. 如何在 IDEA 使用Debug 图文教程
  3. MySQL的内连和外连
  4. 【线上分享】云原生时代,华为云音视频质量监控与优化实践
  5. SVT-AV1:开源编解码最新进展
  6. 微博客户端播放器的演进之路
  7. 展望2018,多媒体开发新趋势
  8. 数据结构与算法之字符凭拼接最低字典序和数据流中取中位数
  9. 【Go API 开发实战 2】RESTful API 介绍
  10. HTTP-FLV的两种方式