题意:给出n个字符串,按照字典序排列,再按照规则输出。

===学习的紫书,题目意思很清楚,求列数和行数最开始看的时候木有看懂啊啊啊

列数:即为(60-M)/(M+2)+1;即为先将最后那一列减去,算普通的有多少列,算完了再加上最后一列

行数:可以用紫书里面的(n-1)/cols+1,也可用ceil函数

再将坐标对应成第几个字符串算出来,是像这个图的箭头标示的从上到下-

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<math.h>
 6 using namespace std;
 7
 8 const int maxcol=60;
 9 const int maxn=100+5;
10 string filenames[maxn];
11
12 void print(const string &s,int len,char extra)
13 {
14     cout<<s;
15     for(int i=0;i<len-s.length();i++)
16     cout<<extra;
17 }
18
19 int main()
20 {
21     int n;
22     while(cin>>n)
23     {
24         int M=-5;
25         for(int i=0;i<n;i++)
26         {
27             cin>>filenames[i];
28             M=max(M,(int)filenames[i].length());
29         }
30         int cols,rows;
31         cols=(maxcol-M)/(M+2)+1;
32         rows=ceil((1.0)*n/cols);
33
34         sort(filenames,filenames+n);
35         print("",60,'-');
36         printf("\n");
37
38         for(int i=0;i<rows;i++)//行数
39         {
40             for(int j=0;j<cols;j++)//列数
41             {
42                 int idx=j*rows+i;
43                 if(idx<n)
44                 print(filenames[idx],j==cols-1 ? M : M+2,' ');
45             }
46             printf("\n");
47         }
48     }
49 }

View Code

转载于:https://www.cnblogs.com/wuyuewoniu/p/4297604.html

UVa 400 Unix Is相关推荐

  1. UVA - 400 Unix ls

    /*收获:1. 我觉得最大的收获是,了解了该怎么进行竖向的数据输出并且,以及<入门经典>的做法,并没有先转换为二维数组再输出,而是用了些别的技巧(好像也能算是技巧,具体的看代码吧,这个我也 ...

  2. 解题报告——例题5-8 Unix is 命令(UVa 400)——26行代码解决

    题目大意: 读入n个字符串,按字典序排序,再按列优先输出,附加条件每行最多输出60个字符,在此条件下要求行最少.(最开始没仔细看题,以为在一行中,每个单词相隔最长单词的长度+2,最后一列单词空间长度为 ...

  3. UVA - 400:Unix ls

    题目的难点在于要求前面的每一列的是最大长度L+2,最后一列的长度是L.对于宽度为WIDTH=60的一行来说,一行可以放下多少个单词决定了需要多少行,知道了行数才能开始根据行数开始放置. 我的做法是co ...

  4. UVa 400 (水题) Unix ls

    题意: 有n个文件名,排序后按列优先左对齐输出.设最长的文件名的长度为M,则最后一列长度为M,其他列长度为M+2. 分析: 这道题很简单,但要把代码写的精炼,还是要好好考虑一下的.lrj的代码中有两个 ...

  5. UVa 400 模拟vector

    背景:多久没有一次ac过了,要提升一次ac的几率啊!这对比赛是很重要的. 思路:这个题主要是更加熟悉了下vector,然后就是一些格式的问题,构造即可.主要感受还是一定要把思路想好再写题! #incl ...

  6. π-Algorithmist分类题目(1)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(1) Sorting UVAL ...

  7. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  8. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  9. 算法竞赛入门经典(第2版)—第五章(C++与STL入门)

    文章目录 零碎知识点整理 题目 10474 - Where is the Marble? 101 - The Blocks Problem 10815 - Andy's First Dictionar ...

  10. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

最新文章

  1. Nodejs 环境配置终极解决方案
  2. ZeroMQ接口函数之 :zmq_strerror - 获取ZMQ错误描述字符串
  3. Tomcat NIO
  4. 万物智联时代的终端智能「管家」 重磅升级:混合云IoT一体机
  5. 什么年代了,买硬盘不论T?
  6. Omnipeek 抓包工具
  7. Ignite问题汇总
  8. 安卓7.0 安兔兔 作假修改
  9. 对于网络文学而言 计算机叙事,【网络文学论文】传统文学中网络文学特征研究(共4573字)...
  10. 2023款ThinkBook 14和15锐龙版区别对比评测选哪个好
  11. 太原科技大学计算机宿舍,太原科技大学宿舍条件怎么样,有独立卫生间和空调吗...
  12. 企业微信给用户带来的是社交减负还会是社交焦虑?
  13. github上有什么好的node.js的项目?
  14. 100条必背JAVA知识点,你都掌握了吗?(上)
  15. 用python写一个彩票过滤器_python入门教程NO.6 用python做个简单的彩票号码统计分析工具...
  16. java下载网络文件的N种方式
  17. 武汉地铁各线路以及各线路预期完工时间
  18. ZigBee 3.0实战教程-Silicon Labs EFR32+EmberZnet-3-06:不同格式固件的区别:bin/hex/s37/gbl
  19. Lenovo g50 如何进入到bios设置?
  20. 开服侠服务器文件,我的世界开服侠

热门文章

  1. 【机器学习算法应用和学习_1】1.1 机器学习框架
  2. [uva11997]k个最小和
  3. [转]VS2005中的代码视图显示行数
  4. Liunx服务管理(Centos)
  5. SQL——连接查询、聚合函数、开窗函数、分组功能、联合查询、子查询
  6. CENTOS6.6上搭建单实例ORACLE12C
  7. cocos2dx shader 变灰 及 冰冻效果
  8. WCFSVC文件的分离
  9. 关于内存地址和内存空间的理解。
  10. [20141124]sql server密码过期,通过SSMS修改策略报错