题目描述:对代码进行对齐,具体形式参看输入输出。

思路:

1. 用getline()读取每一行,再将每一行单词存入一个vector之中

2. 再用一个vector存放每一行的vector

3. 需要找的是每一行对应位置(pi)的单词的最大长度,其它行对应的单词都是按这个最大长度来对齐(填充空格)。找到这个最大长度,减去前一个单词的长度,就是在输出当前单词时需要先填充的空格个数。

代码:

 1 #include <vector>
 2 #include <set>
 3 #include <string>
 4 #include <sstream>
 5 #include <iostream>
 6
 7 using namespace std;
 8
 9 int main()
10 {
11     //freopen("in.txt","r", stdin);
12     //freopen("out.txt","w",stdout);
13     string s;
14     vector<vector<string> > allword;
15     vector<int> pos;     //每行第i个单词的起始位置(相对于前一个单词)
16     pos.push_back(0);
17     while(getline(cin, s)){
18         string word;
19         vector<string> wvec;   //存放每一行的单词
20         int cnt = 0;
21         stringstream ss(s);
22         while(ss >> word){
23             wvec.push_back(word);
24             cnt++;
25             if(cnt > 1 && cnt > pos.size()) pos.push_back(word.size() + 1);  //在存入单词的同时就考虑每个单词大小,
26             else if(word.size() + 1 > pos[cnt]) pos[cnt] = word.size() + 1;    //找到每行第i位置上最大单词长度是多少
27         }
28         allword.push_back(wvec);
29     }
30     for(int i = 0; i < allword.size(); ++i){
31         printf("%s", allword[i][0].c_str()); //第1个单词
32         for(int j = 1; j < allword[i].size(); ++j){
33             for(int k = 0; k < pos[j] - allword[i][j-1].size() ; ++k) printf(" ");  //在打印单词前输出若干空格
34             printf("%s", allword[i][j].c_str());
35         }
36         printf("\n");
37     }
38 }

转载于:https://www.cnblogs.com/patrolli/p/11228099.html

Uva1593 代码对齐相关推荐

  1. UVA1593 代码对齐 输入输出控制

    题目大意: 输入若干行代码,要求各列单词的左边界对齐且尽量靠左.单词之间至少要有一个空格.每个单词长度不超过80个字符,每行不超过180个字符,一共最多1000行. 题解: 如何输入若干行带空格的数据 ...

  2. uva1593代码对齐

    1.题目 输入若干行字符串,每列单词左对齐,单词之间至少空一格.记录每一列的最长长度然后较短的字符串右侧补空格,最后一列不用.记住:文件尾有换行符 2.代码 #include <iostream ...

  3. ACM Uva1593 代码对齐

    题意如下 输入若干行代码,要求各列单词的左边界对齐且尽量靠左. 单词之间至少要空一格.每个单词不超过80个字符,每行不超过180个字符,一共最多1000行. 注意输出时每行的最后一列后面没有空格符. ...

  4. 21行代码AC——习题5-1 代码对齐(Alignment of Code, UVa1593)——解题报告

    题意: 输入若干行代码,要求各列单词的左边界对齐且尽量靠左,单词之间至少要空一格,每个单词不超过80个字符,每行不超过180个字符,一共最多1000行. 思路: 1.输入内容存入二维数组 2.找出每列 ...

  5. 从文本中提取知识图谱代码比较好的,代码对齐,可以使用的

    从文本中提取知识图谱代码比较好的,代码对齐,可以使用的 https://blog.csdn.net/fendouaini/article/details/102987373 https://blog. ...

  6. QtCreator代码对齐的方法

    对应游标行代码对齐 ctrl + i 划选部分代码对齐 1. 使用鼠标划选代码 2. ctrl + i 当前文件全部代码对齐 1. ctrl + a 2. ctrl + i

  7. netbeans 代码对齐_加快开发速度:NetBeans代码模板,AutoHotKey和Ditto

    netbeans 代码对齐 Writing an application in PHP or any other language is both a rewarding and sometimes ...

  8. VScode 代码对齐快捷键

    vscode代码对齐快捷键,选中要对齐的代码块,windows shift+alt+F Mac Shift + Option + F. 效果如下:

  9. IDE(2)——VS系列(2)——VS中代码对齐等快捷键

    在VS2019中,选定代码后,按Ctrl+K+F组合键,可以自动进行代码对齐. 注意:要先按下Ctrl和K,再按下F,因为Ctrl+F是查找的快捷键. 也可以先按下Ctrl+K,再按下Ctrl+F. ...

最新文章

  1. 禁用Intel ME
  2. ONOS系统架构演进,实现高可用性解决方案
  3. sql 如何根据月份查询数据总数_什么是慢查询?如何通过慢查询日志优化?
  4. Codeforces Round #371 (Div. 2) C. Sonya and Queries —— 二进制压缩
  5. python预测控制_无人驾驶——4.控制之MPC模型预测控制
  6. Python os模块文件操作(二)
  7. react 嵌套渲染_React-Router v5 中文翻译之快速开始
  8. 在Linux系统中 测试DNS,Linux系统中dns服务器网络设置及测试
  9. 关于 IBM Tivoli Storage Manager在Oracle中的应用
  10. 嵌入式平台WIFI AP模式测试
  11. eXo Platform 3.0访谈
  12. 网络编程之什么是计算机网络
  13. 百度无线音乐盒刷打印服务器,百度无线音乐盒固件
  14. 计算机地图制图的优势,计算机地图制图
  15. Python---元祖、循环
  16. Unity Shader 皮肤水滴效果
  17. 微擎mysql和redis_微擎如何开启redis,redis开启方法详解
  18. 四川省房产测绘实施细则[2010版]-4
  19. 【深度解刨C语言】符号篇(全)
  20. git与repo区别?

热门文章

  1. cmd xcopy进行远程复制
  2. spring security自定义指南
  3. 千兆宽带:是为了速度而提升速度吗?
  4. Google推出开源空间音频编码引擎Songbird
  5. ORACLE时间函数(SYSDATE)深入理解
  6. Linq之select子句
  7. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
  8. delphi清理编译过程文件(*.dcu),以及垃圾文件*.~*
  9. Python的if __name__ == ‘__main__‘:的作用
  10. python导入模块的三种方法,例子: import numpy和from numpy import * (import matplotlib 和 from matplotlib import *)