6174问题

假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并且继续操作。
例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174、7641-1467=6174。有趣的是,最后回到了自己。
要求:
输入一个n位数,输出操纵序列,直到出现循环(即新得到的数曾经得到过)。输入保证在循环之前最多只会产生1000个整数。
样例输入:1234
样例输出:1234 -> 3087 -> 8352 -> 6174 -> 6174

[分析]
需要解决的问题有:
[1] 如何得到下一个数?
首先需要把各个数字排序,因此需要把各个数字提取出来。然后选择一种排序算法,先将提取的数字所组成的数组按照从小到大排序,然后再将其逆序,然后就可以得到下一个数了。
[2] 如何检查这个数是否已经出现过了?
这个可以通过数组来实现。将每次得到的数字保存到一个数组中,然后遍历这个数组就可以判断这个数字是否已经得到过。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值