题目大意:按照样例(输入时当然无序,先排序),依次按长度最小的字符串分别放在上面和下面,最长的放在中间输出。结构体排序即可,输出时方法多种,我是按照奇偶分别输出的。上代码。
样例如下:
7 Bo Pat Jean Kevin Claude William Marybeth 6 Jim Ben Zoe Joey Frederick Annabelle 5 John Bill Fran Stan Cece 0
SET 1 Bo Jean Claude Marybeth William Kevin Pat SET 2 Jim Zoe Frederick Annabelle Joey Ben SET 3 John Fran Cece Stan Bill
#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; }