UVA1610 聚会游戏 Party Games

知识点:贪心,模拟

这个题以前写过,我写的很麻烦,所以这个次看这个题之前对它充满了恐惧,但是这次不一样了,看完题想了想,不需要什么分类讨论,直接暴力枚举就行了,一看,每个字符串的长度不超过30,那么时间肯定够,直接暴力就可以了,

题目的意思是给两个字符串,求一个长度最短的,满足大于等于小的,小于大的的字符串,如果有多个长度相等的字符串满足,那么取字典序最小的,暴力的思路就很明显了,我们从小的那个字符串开始,每次都让他最后的字母字典序变大1,循环的条件是我们构造的这个字符串小于那个大的字符串,循环中间需要统计答案,然后就是如果字符串的尾部是Z怎么办,我们这是需要一个循环,把尾部连续的Z都去掉,然后让尾部第一个不是Z的加一就行了,我们这样的思路肯定是对的,有的人说后面加字母也能增加字典序,为啥不采用增加字符的而只是减少的,因为题目就是要我们求满足条件的最短的字符串,它的长度肯定小于等于那个小的字符串

写到这里,我觉得我的代码肯定没问题,就提交了,但是中间出错了,后来借助网上的样例算是知道了哪里错了,就是我们去掉构造字符串末尾连续的Z的那个步骤,那个步骤之前需要判断一下整个字符串是不是都是Z,如果都是Z还执行后面的操作很显然就会出错,如果都是Z,那么说明当前的长度已经达到最大的字典序了,答案不可能是比当前长度更长的字符串了,这时退出循环就可以了,这样这个题就完成了,

虽然没有一次性写对,但是觉得我的思路还是不错的,只是细节还是没有做全面&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值