zoj 3336 Friend Number II(水~)

嘻嘻,这道题,2010年5月zoj月赛的题,当时我做啦~没做对。。。一直放着,今天看到了,就想了想。

 

记得当时比赛过后,有人在百度知道问这题怎么做,我还把WY学姐的代码贴上了,党也贴了个,今天一看,下面居然有人回复了,说错的代码页敢贴 = =。。无语死,当时WY学姐过了呀。。。

 

思路很简单,比如1988 ,最后一位减1,倒数第二位加1即可,变为1997.

 

特殊情况,18880,逆序后,08881,找第一个不为0的数,减1,再继续找第一个不为9的数,加1,即19881,逆置,18891.

 

BUT。

 

1838950,按上面的做法后,不就成1839940了?有比1839940更小而且比1838950大的,1839049,问题出来了,怎么使找到最小的呢?我唯一能想到的就是,排序。数据量不大,就230组,最大1000个,随意啦。

 

逆置后,将前几位(到第一个不是9的位置为止),按从大到小排序,再逆序输出即可。

 

稍微费时一点10ms过了。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值