POJ 3617 Best Cow Line
原题
FJ准备带他的N(1≤N≤2000)头奶牛参加一年一度的“年度农民”比赛。在这场比赛中,每个农民把他的奶牛排成一排,并把它们赶过裁判。
比赛的组织者今年采用了一种新的登记方案:只要按照每头奶牛出现的顺序登记它们的首字母即可。,如果FJ按此顺序接收贝西、西尔维娅和朵拉,他只注册BSD)。登记阶段结束后,根据奶牛名字的首字母串,按词典递增顺序对每一组进行判断。
FJ今年很忙,必须赶回他的农场,所以他想要尽早被审判。他决定重新安排他的奶牛,它们已经排好队了,然后再登记。
FJ标志着一条新的竞争奶牛线的位置。然后,他通过重复地将原行的第一头或最后一头奶牛发送到新行的末尾,来将奶牛从旧行编组到新行。当他完成后,FJ把他的牛登记在这个新订单。
根据他的牛的初始顺序,确定他能用这种方法得到的最不符合字典顺序的首字母串。
输入:行1:单个整数:N 行
2…N+1:第i+1行包含了cow的一个初始字母(’ a '…‘Z’),它位于原行的第i个位置,
输出:它所能产生的最少的词典字符串。每一行(可能除了最后一行)都包含新行中80头奶牛的首字母(‘A’…‘Z’)。
Sample Input
6
A
C
D
B
C
B
Sample Output
ABCBCD
题解
题意:给你一个字符串,将串首或串尾的字符添加到一个新字符串的末尾,使新字符串字典序最小。
思路:很容易想到比较首位字符的大小,将较小的先添加,然后再继续比较。但是会出现一个首位字符相同的问题,如果随便选择一个,可能会使结果不是最小,这里要比较一下后续的字符,小的一边先添加。具体见代码。
#include<iostream>
using