南洋理工283 对称排序(结构体排序)

来源:互联网 发布:office for mac错误1 编辑:程序博客网 时间:2024/04/29 21:34

题目大意:按照样例(输入时当然无序,先排序),依次按长度最小的字符串分别放在上面和下面,最长的放在中间输出。结构体排序即可,输出时方法多种,我是按照奇偶分别输出的。上代码。

样例如下:

7BoPatJeanKevinClaudeWilliamMarybeth6JimBenZoeJoeyFrederickAnnabelle5JohnBillFranStanCece0
样例输出
SET 1BoJeanClaudeMarybethWilliamKevinPatSET 2JimZoeFrederickAnnabelleJoeyBenSET 3JohnFranCeceStanBill
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;struct Node{    char s[30];    int len;};bool cmp(Node a,Node b){    return a.len<b.len;}int main(){    Node No[15];    int n;    int i,j;    int k=1;    int temp;    while(scanf("%d",&n)!=EOF&&n)    {        for(i=0;i<n;i++)        {            scanf("%s",No[i].s);            No[i].len=strlen(No[i].s);        }        /*        for(i=0;i<n;i++)        {            for(j=1;i<n;j++)            {                if(No[i].len>No[j].len)                {                temp=No[i].len;                No[i].len=No[j].len;                No[j].len=temp;                }            }        }        */        sort(No,No+n,cmp);        printf("SET %d\n",k++);        /*        for(i=0;i<n;i++)        {            printf("%s\n",No[i].s);        }        */        for(i=0;i<n;i++)        {            if(i%2==0)      //下标序号是偶数,即1,3,5...先输出            printf("%s\n",No[i].s);        }        for(i=n-1;i>=0;i--)        {            if(i%2)         //下标序号是奇数,倒序从n或者n-1开始输出            printf("%s\n",No[i].s);        }    }    return 0;}


原创粉丝点击