(PAT乙级)1005 继续(3n+1)猜想(C语言实现)

总结:

1、思路:Hash散列思想是最重要的!但此处不再是对应点映射+1了,而是只要验证过程中有这个数,即将对应点映射置为1。也就是说:对每一个输入的数字n进行验证,我们用num[]数组来记录,把验证过的数字对应的num标记为1。

2、关于输出,因为定义num数组时有很多为0的元素,针对全部元素不方便查找哪些元素验证过,所以使用排序将输入的k个正整数从大到小排序,然后针对这k个整数对应的num[v[i]=0的即为关键数字。

3、由于我要对数组进行排序,所以输入时先把值输入到n,在赋给数组v[i],这样在后续进行卡拉兹验证的时候会改变n的值,但不会改变v[i]中的值,才能进行有效排序。

猜你喜欢

转载自blog.csdn.net/qq_40840749/article/details/82177674