POJ1146 ID Codes 字典序法

本文介绍了一种简化后的算法,用于解决给定字符重新排列得到字典序排列的问题,包括如何找到给定整数的下一个字典序整数。详细解释了查找过程,包括从右向左寻找第一个比当前位小的数字,然后插入并重新排列后续数字,以生成满足条件的下一个字典序字符串。

Problem Address:http://poj.org/problem?id=1146

 

简单的一道题。

 

【题意】

 

把给定的字符重新排列得到的一串字符串并按字典序排列,对于给定的字符串,输出其下一个字典序字符串,如果没有则输出无。

 

【思路】

 

简化为给定一个整数,求比它大的最小的整数,且这个整数是由其中的数字重组而成的。

 

对于一个整数,从右边第一位开始,向左找第一个比它小的数。如果找不到就从第二位开始,找到则跳出循环。

 

如果最后还没找到,即说明这个数字是字典序的最后一位。输出无。

 

如果找到了,把该位插入到比它小的那个数的位置,并对其后面的数字进行从小到大的排列。

 

这样得到的数字即满足条件。

 

【代码】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值