UVA1593 Alignment of Code 代码对齐 解题报告

UVA1593 Alignment of Code 代码对齐 解题报告

题目链接

https://vjudge.net/problem/UVA-1593

题目大意

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

解题思路

循环输入,每次输入用getline接收一整行,然后使用stringstream来分割单词,用vector< string > rowStrs[maxn]存储每一行的单词,因为需要对齐每一列的左边界并且要尽量靠左,所以在记录单词的同时我们要同时更新每一列单词的最大长度,在记录了所有的单词之后,按行依次输出所有的单词,每个单词的输出宽度设置为当前列最大单词长度+1即可做到题目要求的“对齐每一列的左边界,并且尽量靠左”。注意:因为题目要求输出行末不允许有空格,所以每一行的最后一个单词就不要设置宽度了,设置了反而会导致格式错误。细节参考代码和注释。

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
#define endl '\n';
const int maxn = 1e3 + 10;
const int INF = 0x3fffffff;
const int mod = 1e9 + 7;
vector<string> rowStrs[maxn];
int lenCol[maxn], lineCnt;void solve() {string line;lineCnt = 0;while (getline(cin, line)) {    // 一次输入一整行stringstream ss(line);      // 用streamstream分割每个单词int cnt = 0;string str;while (ss >> str) {         // 分割每个单词lenCol[cnt] = max(lenCol[cnt], (int)str.size());cnt++;                  // 当前单词在第几列rowStrs[lineCnt].push_back(str);    // 记录单词}lineCnt++;  // 统计行数}for (int i = 0; i < lineCnt; i++) {     // 按行依次输出const auto &words = rowStrs[i];for (int j = 0; j < words.size(); j++) {if (j < words.size() - 1)   // 注意每一行行末都不允许有空格,所以要特判是不是该行最后一个单词cout << left << setw(lenCol[j] + 1) << words[j];    // 设置输出宽度为当前列最大单词长度+1elsecout << words[j];   // 每一行的最后一个单词就不要设置宽度了,设置了反而会导致格式错误,会导致行末有多余的空格}cout << endl;}
}int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout << fixed;cout.precision(18);solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前缀合】Leetcode 和可被 K 整除的子数组

题目解析 974. 和可被 K 整除的子数组 算法讲解 前置知识点&#xff1a; 同余定理&#xff1a;(ab) % c 0 可以得出 a % c b % cC中负数求余的结果是负数&#xff0c;但是本题需要的是正数&#xff0c;所以我们为了修正这个结果&#xff0c;需要进行(负数 % 正数 正数) %…

记录JavaScript练习

定时器练习 HTML代码&#xff1a; <div id"lottery"><div class"box-one">1</div><div class"box-two">2</div><div class"box-three">3</div><div class"box-four">4&l…

Spring MVC 视图解析器

在Spring MVC中&#xff0c;配置视图解析器可以帮助将Controller返回的字符串转换为实际的页面地址。以下是配置视图解析器的步骤&#xff1a; 选择视图解析器&#xff1a;根据使用的模板技术&#xff0c;选择合适的视图解析器。常见的视图解析器有InternalResourceViewResolv…

怎么重构一个程序

文章目录 什么是重构为什么重构重构场景怎么重构代码命名复杂度与依赖传递过度设计没有时间重构 什么是重构 摘自《重构&#xff1a;改善既有代码的设计》 重构(名词形式): 对软件内部结构的一种调整&#xff0c;目的是在不改变软件可观察行为的前提下&#xff0c;提高其可理解…

springboot 防抖操作

大佬的代码&#xff1a;看这里 原理&#xff1a; 通过aop切面编程&#xff0c;在调用接口前缓存接口信息&#xff0c;将信息缓存到redis中&#xff0c;在规定时间内重复调用接口&#xff0c;会被拦截请求 有个地方感觉不太合理&#xff0c;在使用中我将其修改了 //前略 publi…

无法用raven-js,如何直接使用TraceKit标准化错误字符串(一次有趣的探索)

引子&#xff1a;网上三年前&#xff08;2020&#xff09;的文章介绍了一个raven-js 简单说就是把堆栈信息格式化兼容各浏览器&#xff0c;便于查看错误来源。 **but&#xff1a;**到处找了一下raven-js&#xff0c;已经没有官方出处了&#xff0c;只在Sentry的源码仓库里发现…

【数据结构】单链表(二)

目录 1.查找数据 2.指定位置插入和删除节点 2.1 指定位置之前插入节点 2.2 指定位置之后插入节点 2.3 删除指定位置节点 2.4 删除指定位置之后的节点 3.销毁链表 我们接着上一篇【数据结构】单链表&#xff08;一&#xff09;-CSDN博客 来继续实现单链表 1.查找数据 在…

2. 如何让mybatis-plus的逻辑删除注解@TableLogic临时失效

文章目录 如何让mybatis-plus的逻辑删除注解TableLogic临时失效1. 场景复现1.1 controller代码1.2 service层代码1.3 entity代码 2. 问题分析3. 解决方案3.1 说明3.2 核心代码3.3 service方法对应修改为3.4 运行结果 如何让mybatis-plus的逻辑删除注解TableLogic临时失效 1. 场…

【QT教程】QT6 QML界面布局艺术

QT6 QML界面布局艺术 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看…

7、configMap

1、configMap是什么 类似与pod的配置中心&#xff0c;不会因为pod的创建销毁&#xff0c;相关配置发生改变 pod定义硬编码意味着需要有效区分⽣产环境与开发过程中的pod 定义。为了能在多个环境下复⽤pod的定义&#xff0c;需要将配置从pod定义描 述中解耦出来。 2、向容器中…

C# WinForm简介

Winform是什么? .Net开发平台中对Windows Form的简称&#xff0c;基于.Net Framework平台 的客户端开发技术&#xff0c;一般使用C#编程。Windows 风格的控件&#xff0c;以及事件&#xff0c;直接使用&#xff0c;开发快速。Windows Form&#xff1a;Windows窗体Windows应用程…

Mongodb入门--头歌实验MongoDB 文档的高级查询操作

数据库存储了大量的数据&#xff0c;当我们需要特定的数据时就要使用查询方法&#xff0c;根据一定的条件&#xff0c;筛选出我们想要的数据&#xff0c;前一章我们简单介绍了条件操作符&#xff08;<、<、>、>、!等&#xff09;&#xff0c;在这一章中我们将更全面…

重生奇迹MU弓箭手装备介绍

重生奇迹MU弓箭手装备搭配什么好呢&#xff1f;装备的搭配对于角色来说帮助很大&#xff0c;所以我们更加要选择合适的装备来搭配。 装备打造 ①装备强化&#xff1a;装备强化需要强化材料 灵魂宝石、祝福宝石、玛雅宝石&#xff0c;强化有几率失败&#xff0c;失败不会导致…

贪心算法|968.监控二叉树

力扣题目链接 class Solution { private:int result;int traversal(TreeNode* cur) {// 空节点&#xff0c;该节点有覆盖if (cur NULL) return 2;int left traversal(cur->left); // 左int right traversal(cur->right); // 右// 情况1// 左右节点都有覆盖if (le…

tcpdump简介

tcpdump tcpdump 简介参数options举例参考文章 简介 不通平台的 tcpdump 支持的参数是不一样的 比如 windows 下的 tcpdump 就不支持 -i 参数 有些嵌入式设备&#xff0c;只支持 -i -w 参数等 一般只用tcpdump进行过滤抓包&#xff0c;然后使用 wireshark 进行解析 表达…

MM-Grounding-DINO的训练推理(待更新)

1、简单介绍 继前面发布的 GroundingDino 和 Open-GroundingDino的推理 和 Open-GroundingDino的训练实现&#xff0c;作为 GroundingDino延续性的文本检测网络 MM-Grounding-DINO 也发布了较详细的 训练和推理实现教程&#xff0c;而且操作性很强。作为学习内容&#xff0c;也…

IO流【内存流、打印流、随机访问流】;初识网络编程

day37 IO流 继day36 各种流 对象流 day36 内存流 class ByteArrayInputStream – 内存输入流 class ByteArrayOutputStream – 内存输出流 注意&#xff1a; 内存流是程序和内存交互&#xff0c;跟文件无关内存流是程序到内存的通道&#xff0c;是关闭不掉的 应用场景&#x…

深度学习pytorch好用网站分享

深度学习在线实验室Featurizehttps://featurize.cn/而且这个网站里面还有一些学习教程 免费好用 如何使用 PyTorch 进行图像分类https://featurize.cn/notebooks/5a36fa40-490e-4664-bf98-aa5ad7b2fc2f 华为modelArtshttps://bbs.huaweicloud.com/forum/thread-76328-1-1.html…

阿里云飞燕平台搭建与linux程序通信(全图文教程)

阿里云飞燕平台搭建与linux程序通信&#xff08;全图文教程&#xff09; 一、MQTT理论1.1 概念1.2 理解发布和订阅1.3 MQTT传输的消息组成 二、阿里云飞燕平台搭建2.1 产品创建2.2 自定义自己的功能2.3 人机交互 三、测试3.1代码分析3.2 效果验证 一、MQTT理论 1.1 概念 MQTT…

vue3从精通到入门17:内置组件之Transition和TransitionGroup

Transition <Transition> 是一个内置组件&#xff0c;它用于在元素或组件的插入、更新和移除时应用过渡效果。Vue 3 的 <Transition> 组件提供了一个声明式的方式来处理这些过渡效果&#xff0c;使开发者能够更容易地添加动画到他们的 Vue 应用中。 基本概念 包裹…