例题5-8 Unix ls 命令 UVa400
来源:互联网 发布:测试交换机端口带宽 编辑:程序博客网 时间:2024/05/17 08:19
例题5-8 Unix ls 命令 UVa400
感悟。
1、从网站下载英文原题,重点在看输入输出数据与格式。
2、英文大意看懂,但在输出文件内容列数的变化规律没摸清。
3、反复读题,猜测大意,是符合条件的列,组合成行,尽可能的多,占领一行(每行60字符)。The rightmost column will be the width of the longest filename and all other columns will be the width of the longest filename plus 2. There will be as many columns as will fit in 60 characters.文中输出的文件列数决定因素。
样例1:
M=19
n*(M+2)+M=60=>n=1,故样例1有两列,每列文件数(10+2-1)/2=5
样例2:
M=12
n*(M+2)+M=60=>n=3,故样例2有四列,每列文件数(12+4-1)/4=3
样例3:
M=9
n*(M+2)+M=60=>n=4,故样例3有五列,每列文件数(19+5-1)/5=4
4、用set存储文件名,按3、进行输出。
5、通过http://blog.csdn.net/u010902721/article/details/45771597复习了set中迭代器的用法,注意:
it<input.end()错误;it!=input.end()正确。
6、突然发现,字符串是一行一行输出的,怎样将一个系列的字符串按行列有序输出,看来得费些功夫。
7、准备引入vector进行处理。
8、睡了一觉,很快将一维字符串数组表示成二维表格形式,稍加调试,样例通过,在http://vjudge.net上提交AC,再一次,一次提交AC,在https://uva.onlinejudge.org/提交AC,看了看时间2016-11-24
9、扫了一遍书中代码,核心思想比较接近。但代码写起来,差异还是比较大的。
附上AC代码,编译环境Dev-C++4.9.9.2
#include <iostream>#include <set>
#include <vector>
using namespace std;
int main(){
int n;
while(cin>>n){
set<string> input;
string filename;
int row,col;
int len;
int maxlen=0;
int count=0;
int size;
vector<string> vec;
int i,j,k,m;
for(i=0;i<n;i++){
cin>>filename;
len=filename.length();
if(maxlen<len)//查找最长文件名的长度
maxlen=len;
input.insert(filename);
}
col=(60-maxlen)/(maxlen+2)+1;
row=(n+col-1)/col;
cout<<"------------------------------------------------------------"<<endl;
//迭代器
for(set<string>::iterator it=input.begin();it!=input.end();it++){//it<input.end()错误
vec.push_back(*it);
}
//打印字符串
size=vec.size();
for(i=0;i<row;i++){
for(j=0;j<col;j++){
k=i+j*row;//注意是j*row而不是j*col
if(k<size){//字符串处理
string stmp=vec[k];
int begin,end;
begin=stmp.length();
if(j<=col-2){//除最后一列外
end=maxlen+2;
}else{//最后一列
end=maxlen;
}
for(m=begin;m<end;m++){//通过加空格来补齐
stmp+=" ";
}
cout<<stmp;
}
}
cout<<endl;
}
}
return 0;
}
- 例题5-8 Unix ls 命令 UVa400
- UVA400-Unix的ls命令
- 《算法竞赛入门经典2ndEdition 》例题5-8 Unix is 命令(Unix is, Uva400)
- Uva400 Unix ls 【排序+技巧】【例5-8】
- UVa400 Unix ls
- Unix ls UVA400
- UVa400 Unix ls
- UVA400 Unix ls
- UVA400 Unix ls
- uva400 unix ls (字符串 排序)
- [UVA400]Unix ls[格式输出]
- Uva400——Unix ls
- 例题5-8 UVA 400 Unix Is命令
- unix ls 命令
- UVA400 Unix Is
- UVa400 Unix Is
- Uva400 Unix is
- Unix ls UVA 命令400
- HDU1159——Common Subsequence
- Android开发:filePath放在哪个文件夹
- c语言里如何调用汇编里的变量?
- nyoj 206 矩形个数
- PHP static后期静态绑定
- 例题5-8 Unix ls 命令 UVa400
- swing带标题的边框
- 最大子列和(二)
- XlistView 上拉加载,下拉刷新
- wamp服务器的安装问题
- C/C++调用mysql接口实例1
- retrofit请求持久化Cookie
- MAC平台下Xcode配置使用Qt方法
- Mybatis系列番外篇之多参数