【题解】POJ 3617 Best Cow Line(贪心)

本文详细介绍了如何解决POJ 3617 Best Cow Line问题,这是一个涉及贪心策略的算法题目。通过重新排列奶牛的顺序,以达到在比赛中尽可能早被评判的目标。文章提供了题意解析、思路分析以及解决方案,重点在于处理首位字符相同时如何确保生成的字符串字典序最小。
摘要由CSDN通过智能技术生成

POJ 3617 Best Cow Line


原题

https://vjudge.net/problem/POJ-3617

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值