PAT 1055

题目链接https://www.patest.cn/contests/pat-b-practise/1055

分析:思路很巧妙,感觉很有意义的字符串题目

#include<bits/stdc++.h>

using namespace std;
 
struct p
{
    string name;
    int high;
}P[10008];

bool cmp(p X,p Y)
{
    if(X.high==Y.high)   return X.name>Y.name; 
    return X.high<Y.high;
}

int main()
{
    int n,k,hang;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>P[i].name>>P[i].high;
    } 
    sort(P,P+n,cmp);
    hang=n/k;
    string res="";
    for(int i=0;i<k;i++)
    {
        string LL="";
        int start=i*hang;
        int endd=(i+1)*hang-1;
        if(endd+hang>=n)  endd=n-1;
        LL=P[endd].name;
        for(int j=endd-1;j>=start;j--)
        {
            if(j%2!=endd%2)
                LL=P[j].name+" "+LL;
            else
                LL=LL+" "+P[j].name;
        }
        res=LL+"
"+res;
    }
    cout<<res;
    return 0;
} 
原文地址:https://www.cnblogs.com/gaoss/p/5401704.html