UVA 400 - Unix ls (Unixls命令)
csdn : https://blog.csdn.net/su_cicada/article/details/86773007
例题5-8 Unixls命令(Unix ls,UVa400) 输入正整数n以及n个文件名,按照字典序排序后按列优先的方式左对齐输出。 假设最长文件名有M字符,则最右列有M字符,其他列都是M+2字符。
Sample Input
10
tiny
2short4me
very_long_file_name
shorter
size-1
size2
size3
much_longer_name
12345678.123
mid_size_name
12
Weaser
Alfalfa
Stimey
Buckwheat
Porky
Joe
Darla
Cotton
Butch
Froggy
Mrs_Crabapple
P.D.
19
Mr._French
Jody
Buffy
Sissy
Keith
Danny
Lori
Chris
Shirley
Marsha
Jan
Cindy
Carol
Mike
Greg
Peter
Bobby
Alice
Ruben
Sample Output
------------------------------------------------------------
12345678.123 size-1
2short4me size2
mid_size_name size3
much_longer_name tiny
shorter very_long_file_name
------------------------------------------------------------
Alfalfa Cotton Joe Porky
Buckwheat Darla Mrs_Crabapple Stimey
Butch Froggy P.D. Weaser
------------------------------------------------------------
Alice Chris Jan Marsha Ruben
Bobby Cindy Jody Mike Shirley
Buffy Danny Keith Mr._French Sissy
Carol Greg Lori Peter
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=341
[注意] 一行最后一个单词后面不要有两个空格
[注意] 每组最后一个单词后面不用空2格
算行数时向上取整
输出时,设置额外的break条件,即已经输出完最后一个,不要继续越界输出
其余看代码
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
/*
[注意] 一行最后一个单词后面不要有两个空格
[注意] 每组最后一个单词后面不用空2格
算行数时向上取整
输出时,设置额外的break条件,即已经输出完最后一个,不要继续越界输出
*/
int main()
{
int N;
while(cin>>N){
vector<string> list;
int max_len = 0;
for(int i=0;i<N;i++){
string str;
cin>>str;
max_len = max_len < str.size() ? str.size() : max_len;
list.push_back(str);
}
sort(list.begin(), list.end());
int count_col = 0; // 列数
int count_line = 0; //行数
count_col = (60+2) / (max_len+2);
count_line = ceil((double)list.size() / count_col); //[注意]这里除的时候要转换为浮点型
// cout<<list.size()<<" "<<(double)list.size() / count_col + 0.5<<endl;
// cout<<max_len<<" "<<count_col<<" "<<count_line<<endl;
for(int i=0;i<60;i++)
cout<<"-";
cout<<endl;
for(int i=0;i<count_line;i++){ // 第几行
for(int k=0; k<count_col && (i+k*count_line)<list.size(); k++){ // 第几列, 循环判断条件中,加上判输出单词个数足够
if(k>0) //作为两个词块之间间隔的空格,每行第一个之前没有
cout<<" ";
string out = list[i+k*count_line];
cout<<out;
//输出每个单词后面的占位空格 (不算单词块之间2个空格的间隔)
for(int j=0;j<max_len-out.size();j++)
cout<<" ";
}
cout<<endl;
}
}
return 0;
}
// AC at 2019/2/2 00:22
没什么难度,注意注意点就行, 感谢 udebug
https://www.udebug.com/UVa/400
UVA 400 - Unix ls (Unixls命令)的更多相关文章
- UVA 400 Unix ls by sixleaves
题目其实很简单,答题意思就是从管道读取一组文件名,并且按照字典序排列,但是输入的时候按列先输出,再输出行.而且每一行最多60个字符.而每个文件名所占的宽度为最大文件名的长度加2,除了输出在最右边的文件 ...
- Uva - 400 - Unix ls
先计算出最长文件的长度M,然后计算列数和行数,最后输出即可. AC代码: #include <iostream> #include <cstdio> #include < ...
- uva 400 Unix ls 文件输出排版 排序题
这题的需要注意的地方就是计算行数与列数,以及输出的控制. 题目要求每一列都要有能够容纳最长文件名的空间,两列之间要留两个空格,每一行不能超过60. 简单计算下即可. 输出时我用循环输出空格来解决对齐的 ...
- UVa 400 Unix Is命令
简单题 #include <bits/stdc++.h> using namespace std; const int maxn=110; string s[maxn]; int main ...
- UVa 400 Unix Is
题意:给出n个字符串,按照字典序排列,再按照规则输出. ===学习的紫书,题目意思很清楚,求列数和行数最开始看的时候木有看懂啊啊啊 列数:即为(60-M)/(M+2)+1;即为先将最后那一列减去,算普 ...
- UVa - 1593 Unix ls(STL)
给你一堆文件名,排序后按列优先的方式左对齐输出. 假设最长文件名长度是M,那么每一列都要有M+2字符,最后一列有M字符. inmanip真NB..orz #include <iostream&g ...
- UVa400.Unix ls
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 28个Unix/Linux的命令行神器_转
28个Unix/Linux的命令行神器 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具,有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的.这些工具 ...
- 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列
http://man.linuxde.net/grep ---------------------------------------------------- 如何使用Unix/Linux gre ...
随机推荐
- In-app Billing 概述
这个文档讲解了In-app Billing的基础构成和功能,为了能够把In-app Billing功能添加到你的程序中,你需要很好的理解这些内容. 注意: 保证你的应用遵从发布地国家的相关法律. 举例 ...
- Python学习---迭代器学习1210
可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的generator fun ...
- linux下常用命令:
常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir ...
- 78、WebClient实现上传下载 System.Net、System.Uri类
高层类.使用简单.均支持异步版本.支持http,https,fpt,files等URI. 一.下载 方法: Stream= client.OpenRead(serverUri): 打开一个可读的流.对 ...
- MongoDB authentication failed
0.随笔摘要: MongoDB 安装配置 MongoDB 权限控制 MongoDB 注意事项 authentication failed 1.MongoDB 下载安装配置 MongoDB官网 ...
- URAL-1018 Binary Apple Tree---树形DP
题目链接: https://cn.vjudge.net/problem/URAL-1018 题目大意: 给你一棵树,每条边有一个边权,求以1为根节点,q条边的子数(q+1个点),边权和至最大. 解题思 ...
- 使用highmaps制作中国地图
Highmaps 所需文件 http://code.highcharts.com/maps/highmaps.js(地图渲染的核心文件 必须引用)http://code.highcharts.com/ ...
- mysql备份数据库脚本
mysqldump.exe -uroot -proot mydb > D:\backup_script\bak-tmp\mydb.sql 备注:把mysql的bin下的mysqldump.exe ...
- Kali-linux其他信息收集手段
上面介绍了使用不同的工具以操作步骤的形式进行了信息收集.在Kali中还可以使用一些常规的或非常规方法来收集信息,如使用Recon-NG框架.Netdiscover工具和Shodan工具等.本节将介绍使 ...
- 【noip 模拟赛curse,light,maze】 题解
2018.10.16 总结:考的不好 原因: 1.考的时候没状态,读题读不进去 2.考的时候不仔细,该得分没得到 T1:curse 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到 ...