一、我的思路
1、输入n个数保存到a[n]中
2、每次输入另b[n] = a[n]
3、对每一个a[i], 当为奇数时候 a[i] = (3*a[i] + 1) / 2, 如果c[0]-c[t]中没有它,那t += 1, c[t] = a[i],当为偶数时候一样
4、比较b中的每一个值和c中的每一个值,b中有c中没有的保存到d中
5、把d排序后输出
二、我思路的优化
1、输入n个数保存到a[n]中,mask[100]每个值都初始化为0,每次输入令b[i] = a[i]
2、对每一个a[i], 当a[i]为奇数时候 a[i] = (3*a[i] + 1) / 2, 如果a[0]到a[n]中有它,即此时a[t] = a[i], 那mask[t] = 1;当a[i]为偶数时候一样
3、遍历b数组中0到n中mask为0的值,保存到c数组中
4、对c数组排序并输出
三、我思路的优化
1、输入n个数保存到a[n]中,每次输入令b[i] = a[i]
2、对每一个a[i], 当a[i]为奇数时候 a[i] = (3*a[i] + 1) / 2, 如果b[0]到b[n]中有它,即此时b[t] = b[i], 那b[t] = 0;当a[i]为偶数时候一样
3、遍历b[0]到b[n]中值不为0的数,保存到c数组中
4、对c数组排序并输出
四、其他思路
- 依次对列表中的数字进行猜想计算,将每一步得到的中间数字与列表中的数字相匹配,若有匹配,则将该数字从列表中删除。该过程结束后,列表中剩下的数就是最终结果,排序之后进行输出。
- 记录初始给出的关键数字,对每一个数字进行验证计算,每遇到初始给出的数字时,对其进行标记。标记过的数字便不再进行验证。
标记、删除等方式也就差不多我以上保存到另外数组、或者用mask、或者直接把这个数字改为0的方式,概念相同但是写代码的角度来说我的方法要麻烦许多,所以要看看结构体啦!!!看完结构体回来这道题重新写一遍!!!
五、收获
- 先写好思路再写题超级顺畅!!!真的,这道题很顺畅的就写出来了,以后先写思路再写题,不先写题再写思路了。
- 你总是格式错误,最后一点点空格不要多出来,看一下代码怎么写的!