《算法竞赛入门经典2ndEdition 》例题5-8 Unix is 命令(Unix is, Uva400)

来源:互联网 发布:国际市场占有率数据 编辑:程序博客网 时间:2024/06/07 02:24

这题也就只能算是个STL小练习吧,没有任何思维上难度,
还是比较简单的,(虽然我的程序还是没有刘汝佳的简洁。。。,表示依旧没有这样把一些步骤定义成函数的习惯)直接放代码吧。

#include <cstdio>#include <cstring>#include <vector>#include <algorithm>#include <iostream>#include <cmath>using namespace std;vector<string> s; int main(){  freopen("New Text Document.txt","r",stdin);  freopen("Output.txt","w",stdout);  ios::sync_with_stdio(false);  int n;  string str;  while(cin>>n)  {    cout<<"------------------------------------------------------------"<<endl;    cin.get();    int max = 0;    s.clear();    for(int i = 0; i < n; i++)    {       getline(cin, str);      s.push_back(str);      //cout<<str<<endl;      if(str.length() > max) max = str.length();    }    int row = (60+2) / (max+2);    sort(s.begin(), s.end());    int line = s.size() / row;    if(line*row != s.size()) line++;    for(int i = 1; i <= line; i++)    {      for(int j = 1 ; j <= row; j++)      {        int pos = (j-1)*line+i;        if(pos-1<s.size())         {          cout<<s[pos-1];          for(int i = s[pos-1].length(); i < max; i++) cout<<" ";        }         if(j!=row) cout<<"  ";      }      cout<<endl;    }  }  return 0;} 

下面是刘汝佳标程。

// UVa400 Unix ls// Rujia Liu#include<iostream>#include<string>#include<algorithm>using namespace std;const int maxcol = 60;const int maxn = 100 + 5;string filenames[maxn];// 输出字符串s,长度不足len时补字符extravoid print(const string& s, int len, char extra) {  cout << s;  for(int i = 0; i < len-s.length(); i++)    cout << extra;}int main() {  int n;  while(cin >> n) {    int M = 0;    for(int i = 0; i < n; i++) {      cin >> filenames[i];      M = max(M, (int)filenames[i].length());    }    // 计算列数cols和行数rows    int cols = (maxcol - M) / (M + 2) + 1, rows = (n - 1) / cols + 1;    print("", 60, '-');    cout << "\n";    sort(filenames, filenames+n);    for(int r = 0; r < rows; r++) {      for(int c = 0; c < cols; c++) {        int idx = c * rows + r;        if(idx < n) print(filenames[idx], c == cols-1 ? M : M+2, ' ');      }      cout << "\n";    }  }  return 0;}
1 0
原创粉丝点击