Unix is 命令 (排序和字符串处理) UVA

来源:互联网 发布:linux如何卸载jdk1.7 编辑:程序博客网 时间:2024/06/16 09:57
#include <bits/stdc++.h>using namespace std;const int maxn=100+5;string s[maxn];int main(void){    int n;    while(cin >> n)    {        for(int i=0; i<n; i++)            cin >> s[i];        int maxlen=-1;        for(int i=0; i<n; i++)        {            maxlen=max(maxlen,(int)s[i].length());        }        sort(s,s+n);        for(int i=1; i<=60; i++)            printf("-");        puts("");        int minrow;        int maxcolumn;        maxcolumn=(60-maxlen)/(maxlen+2)+1;        if(n%maxcolumn==0)            minrow=n/maxcolumn;        else            minrow=n/maxcolumn+1;        //printf("maxcolum=%d  minrow=%d\n",maxcolumn,minrow);        for(int i=0; i<minrow; i++)        {            for(int j=0; j<maxcolumn; j++)            {                int index=i+j*minrow;                //这里改成if(index>=n) {printf("\n");return 0;}就wa 了。 先当历史遗留问题吧。                if(index<n)                {                    if(j!=maxcolumn-1)                    {                        cout << s[index] ;                        for(int i=1; i<=(maxlen+2)-s[index].length(); i++)                            printf(" ");                    }                    else if(j==maxcolumn-1)                    {                        cout << s[index] ;                        for(int i=1; i<=maxlen-s[index].length(); i++)                            printf(" ");                    }                }            }            printf("\n");        }    }}

// 主要关注 string 的二维形式把。