• UVa 400 Unix Is


    题意:给出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("
    ");
    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("
    ");
    47         }                
    48     }
    49 }
    View Code
  • 相关阅读:
    移动安全
    Photoshop笔记
    ARMv7 与 ARMv8对比
    centos系统 网络配置
    视频大文件压缩
    开发者必备Linux命令
    开发者必备Docker命令
    文件服务器minio
    Java 图片Base64
    socket
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4297604.html
Copyright © 2020-2023  润新知