ZOJ 2172 Symmetric Order
题意:要求把输入的n个人的名字按照名字长度两头短中间长那样排列输出,并且如果是相同长度的,不能破坏先后顺序。
思路:用结构体存的。呵呵,嗯,这道题是大一寒假的时候写的,今天暑假训练的时候老师拿出来讲,突然发现原先写的代码竟然还排序?!用不着排序,这道题就是字符串的输入输出,练习的是存储结构。老师竟然用了二维数组,用其中一维来表示字符串的位置,另一维用来存储字符串。指针思想,我无耻的表示当我发现老师是这样存储的时候老师已经讲完了。= =|没用过,有压力。
代码:
#include<stdio.h> #include<string.h> int main(){ int i,j,N; struct name{ char letter[50]; }n[50]; for(i = 1;;i++){ scanf("%d",&N); if(N==0) break; for(j = 0;j<=N-1;j++) scanf("%s",n[j].letter); printf("SET %d\n",i); if(N%2!=0){ for(j = 0;j<=N-1;j = j+2){ printf("%s\n",n[j].letter); } for(j = N-2;j>=1;j = j-2){ printf("%s\n",n[j].letter); } } if(N%2==0){ for(j = 0;j<=N-2;j = j+2){ printf("%s\n",n[j].letter); } for(j = N-1;j>=1;j = j-2){ printf("%s\n",n[j].letter); } } } return 0; }