1005 看完结构体需要重新做一遍的题

本文探讨了一种特定算法的三次优化过程,从基本实现到高效执行的改进策略,通过对比和迭代,展示了如何有效提升算法性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、我的思路
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的方式,概念相同但是写代码的角度来说我的方法要麻烦许多,所以要看看结构体啦!!!看完结构体回来这道题重新写一遍!!!

五、收获

  • 先写好思路再写题超级顺畅!!!真的,这道题很顺畅的就写出来了,以后先写思路再写题,不先写题再写思路了。
  • 你总是格式错误,最后一点点空格不要多出来,看一下代码怎么写的!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值