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命令)的更多相关文章

  1. UVA 400 Unix ls by sixleaves

    题目其实很简单,答题意思就是从管道读取一组文件名,并且按照字典序排列,但是输入的时候按列先输出,再输出行.而且每一行最多60个字符.而每个文件名所占的宽度为最大文件名的长度加2,除了输出在最右边的文件 ...

  2. Uva - 400 - Unix ls

    先计算出最长文件的长度M,然后计算列数和行数,最后输出即可. AC代码: #include <iostream> #include <cstdio> #include < ...

  3. uva 400 Unix ls 文件输出排版 排序题

    这题的需要注意的地方就是计算行数与列数,以及输出的控制. 题目要求每一列都要有能够容纳最长文件名的空间,两列之间要留两个空格,每一行不能超过60. 简单计算下即可. 输出时我用循环输出空格来解决对齐的 ...

  4. UVa 400 Unix Is命令

    简单题 #include <bits/stdc++.h> using namespace std; const int maxn=110; string s[maxn]; int main ...

  5. UVa 400 Unix Is

    题意:给出n个字符串,按照字典序排列,再按照规则输出. ===学习的紫书,题目意思很清楚,求列数和行数最开始看的时候木有看懂啊啊啊 列数:即为(60-M)/(M+2)+1;即为先将最后那一列减去,算普 ...

  6. UVa - 1593 Unix ls(STL)

    给你一堆文件名,排序后按列优先的方式左对齐输出. 假设最长文件名长度是M,那么每一列都要有M+2字符,最后一列有M字符. inmanip真NB..orz #include <iostream&g ...

  7. UVa400.Unix ls

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. 28个Unix/Linux的命令行神器_转

    28个Unix/Linux的命令行神器 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具,有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的.这些工具 ...

  9. 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列

     http://man.linuxde.net/grep ---------------------------------------------------- 如何使用Unix/Linux gre ...

随机推荐

  1. Linux下调节CPU使用的几种方法

    一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上 #taskset-p,    设定一个已存在的pid,而不是重新开启一个新任务-c,    指定一个处理,可以指定多个,以 ...

  2. 有用的JS函数

    1. QueryString function queryString(key) { var re = new RegExp("[?&]" + key + "=( ...

  3. July 29th 2017 Week 30th Saturday

    Where there is great love, there are always miracles. 哪里有真爱存在,哪里就有奇迹发生. Everyone expects there can b ...

  4. December 12th 2016 Week 51st Monday

    Nothing is impossible for a willing heart. 心之所愿,无所不成. I wish I can be a strong, clever, powerful and ...

  5. php中上传图片

    这里来看看php中如何上传图片的 先看代码check_image.php <html> <head> <title></title> <style ...

  6. [Tyvj 模拟赛] 运

    运 [问题背景] zhx和妹子们玩数数游戏. [问题描述] 仅包含4或7的数被称为幸运数. 一个序列的子序列被定义为从序列中删去若干个数,剩下的数组成的新序列.两个子序列被定义为不同的当且仅当其中的元 ...

  7. 浅析VS2010反汇编

    第一篇 1. 怎样进行反汇编 在调试的环境下,我们能够很方便地通过反汇编窗体查看程序生成的反汇编信息. 例如以下图所看到的. 记得中断程序的运行,不然看不到反汇编的指令 看一个简单的程序及其生成的汇编 ...

  8. 捡了一个非常淫荡的PHP后门,给跪了

    <?php unlink($_SERVER['SCRIPT_FILENAME']); ignore_user_abort(true); set_time_limit(0); $remote_fi ...

  9. python网络爬虫--简单爬取糗事百科

    刚开始学习python爬虫,写了一个简单python程序爬取糗事百科. 具体步骤是这样的:首先查看糗事百科的url:http://www.qiushibaike.com/8hr/page/2/?s=4 ...

  10. Eclipse html 编辑器插件下载安装

    需要在eclipse里面编辑html和jsp,语法高亮和语法提示,自动补全等. 一.下载GEF(依赖包): 1.下载地址:http://www.eclipse.org/downloads/downlo ...