对称排序

对称排序

时间限制:1000 ms  |  内存限制:65535 KB

难度:1

描述

In your job at Albatross Circus Management (yes, it‘s run by a bunch of clowns), you have just finished writing a program whose output is a list of names in nondescending order by length (so that each name is at least as long as
the one preceding it). However, your boss does not like the way the output looks, and instead wants the output to appear more symmetric, with the shorter strings at the top and bottom and the longer strings in the middle. His rule is that each pair of names
belongs on opposite ends of the list, and the first name in the pair is always in the top part of the list. In the first example set below, Bo and Pat are the first pair, Jean and Kevin the second pair, etc.

输入
The input consists of one or more sets of strings, followed by a final line containing only the value 0. Each set starts with a line containing an integer, n, which is the number of strings in the set, followed by n strings,
one per line, NOT SORTED. None of the strings contain spaces. There is at least one and no more than 15 strings per set. Each string is at most 25 characters long. 
输出
For each input set print "SET n" on a line, where n starts at 1, followed by the output set as shown in the sample output.

If length of two strings is equal,arrange them as the original order.(HINT: StableSort recommanded)

样例输入
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


时间: 2024-10-12 01:24:44

对称排序的相关文章

仲兆鹏 第9次

#include<stdio.h>//对称排序 #include<string.h> void check(char str[]) { int i,len; len=strlen(str); for(i=0;i<len;i++) { if(str[i]!=str[len-1-i]) { printf("输入的%s不是对称的字符串;\n",str); return 0; } } printf("输入的%s是对称的字符串;\n",str);

数据结构学习笔记-排序/队/栈/链/堆/查找树/红黑树

排序: 插入排序:每次从剩余数据中选取一个最小的,插入已经排序完成的序列中 合并排序:将数据分成左右两组分别排序,然后合并,对每组数据的排序递归处理. 冒泡排序:重复交换两个相邻元素,从a[1]开始向a[0]方向冒泡,然后a[2]...当a[i]无法继续往前挤的时候说明前面的更小了,而且越往前越小(挤得越往前) 堆排序:构造最大堆,每次取走根结点(自然是最大的),再调用MAX-HEAPIFY算法(见后文的堆)恢复最大堆的性质,重复取走根结点 快速排序(对A[r]-A[n]进行排序): 1.从序列

April Fools Contest 2017 题解&amp;源码(A,数学 B,数学 C,数学 D,字符串 E,数字逻辑 F,排序,卡时间)

A. Numbers Joke time limit per test:2 seconds memory limit per test:64 megabytes input:standard input output:standard output Input The input contains a single integer a (1 ≤ a ≤ 30). Output Output a single integer. Example Input 3 Output 27 题目链接:http

003-文本处理、排序、统计及bash特性、用户组权限、用户管理配置文件

l  1.文本处理命令 1.)cat(concatenate):连接并显示 tac:倒序显示文件 -n(number):显示行号 -E(show-ends):显示行结束符 2.)more.less:分屏显示 more: 向后翻,翻到尾部退出 less: 与打开man使用相同 3.)head:查看前n行 Tail:查看后n行 -n(lines):指定显示n行 tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容: 4.)cut:文本剪切 -d(delimiter):指定字段分隔

求实对称阵的 特征值 和 特征向量(转)

/// <summary> /// 求实对称阵的 特征值 和 特征向量 /// </summary> /// <param name="data">实对称阵</param> /// <param name="num">维数</param> /// <param name="eigenvalue">引用参数 特征值 回传</param> /// <

go排序

补注: 近来又看 go 的排序, 发现以前对 go 的排序理解的有点浅了. go 的排序思路和 c 和 c++ 有些差别. c 默认是对数组进行排序, c++ 是对一个序列进行排序, go 则更宽泛一些,待排序的可以是任何对象, 虽然很多情况下是一个 slice (分片, 类似于数组),或是包含 slice 的一个对象. 排序(接口)的三个要素: 待排序元素个数 n : 第 i 和第 j 个元素的比较函数 cmp : 第 i 和 第 j 个元素的交换 swap : 乍一看条件 3 是多余的, c

zjut 1208排列对称串

排列对称串  Time Limit:1000MS  Memory Limit:32768K Description: 很多字串,有些是对称的,有些是不对称的,请将那些对称的字串按从小到大的顺序输出.字串先以长度论大小,如果长度相同,再以ASCII码值为大小标准. Input: 输入数据中含有一些字串(1≤串长≤256). Output: 根据每个字串,输出对称的那些串,并且要求按从小到大的顺序输出. Sample Input: 123321 123454321 123 321 sdfsdfd 1

各种排序算法的总结

都是基于内存的排序算法,包括插入排序.希尔排序.冒泡排序.快速排序.简单选择排序.堆排序.归并排序 14年在网易Blog上写的,现把它放到这里.   一,直接插入排序        总体思路:位于表中后面的元素依次与表中前面的元素比较,若比之小,则还需继续和更前面的元素比较,直至遇到一个比它大的元素或者比较到第一个元素(哨兵)了. ①先将第一个元素视为有序,第二个元素与第一个元素比较,若比第一个元素小,则插入到第一个元素之前.第三个元素依次与第二个元素.第一个元素比较(前三 个元素有序):第四个

4种排序算法

1.冒泡排序 冒泡排序其实是基于“交换”.每次从第一个记录开始,一.二两个记录比较,大的往后放,二三两个记录比较...依次类推,这就是一趟冒泡排序.每一趟冒泡排序后,无序序列中值最大的记录冒到序列末尾,所以称之为冒泡排序 function BubbleSort(&$_arr){ $len=count($_arr); //外循环控制轮数 for($j=$len;$j>0;$j--){ //控制比较次数 for($i=0;$i<$j-1;$i++){ if($_arr[$i]>$_a