7-2 h0122. 天梯赛L1 对称顺序 C语言AC题解【仅供分享】

Posted on 2022-10-12 21:11  zeitspeed  阅读(48)  评论(0)    收藏  举报

您在由一群小丑经营的Albatross Circus Management工作,您刚写了一个以长度非递减的顺序输出姓名列表的程序(每个姓名至少要和前面的名字一样长)。但是,您的老板不喜欢这样的输出方式,他要求改为看上去对称的输出形式,最短的字符串在顶部和低部,最长的在中间。他的规则是每一对姓名在列表对等的地方,每一对姓名中的第一个在列表的上方。如在样例输入的第一个例子中,Bo和Pat是第一对,Jean和Kevin是第二对,等等。

输入格式:
输入包含若干测试用例。每个测试用例是一个或多个字符串组成的集合。输入以0为结束。每个测试用例以一个整数n为开始,表示该测试用例中字符串的个数,每个字符串一行,字符串以长度的非递减顺序排列。字符串不含空格。每个测试用例中的字符串至少有一个,至多有15个。每个字符串至多25个字符。

输出格式:
对每个测试用例输出一行“SET n”,其中n从1开始,后面的输出如样例输出所示。

输入样例:
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>
int main(void) {
    char a[50][50];
    int n = 0;
    int sum = 1;
    scanf("%d", &n);
    while (n!=0) {
        for (int i = 0; i < n; i++) {
            scanf("%s", a[i]);
        }
        printf("SET %d\n", sum);
        for (int i = 0; i < n; i++) {
            if (i % 2 == 0) {
                printf("%s\n", a[i]);
            }
        }
        for (int i = n-1; i >= 0 ; i--) {
            if (i % 2 != 0) {
                printf("%s\n", a[i]);
            }
        }
        scanf("%d", &n);
        sum++;
    }
    return 0;
}