🌱本专栏将会从基础开始,循序渐进,每天刷一道算法题,也请大家多多支持。数据结构虽然难,但只要肯坚持,一定能学好,希望大家都能够从中有所收获。
📫专栏地址: 🍇每日一道算法题专栏 🍉数据结构专栏
📫本专栏的所有代码都将更新在Gitee上,项目地址:项目地址
📫相关数据结构演示软件:链接地址
📫数据结构在线演示地址:https://visualgo.net/zh https://algorithm-visualizer.org/
💬如果文章知识点有错误的地方,请指正!大家一起学习,一起进步。💬
🔥 如果感觉博主的文章还不错的话,还请❤️关注、👍点赞、⭐️收藏三连支持👍一下博主哦
准备好了吗
Let’s go!
文章目录
题目来源:
PAT程序设计
👀问题描述
💬相关知识点介绍
这种题型属于模拟题。模拟题是一类“题目怎么说,你就怎么做”的题目,如果实现起来不太麻烦,就可以称之为“简单模拟”。这类题目不涉及算法,完全只是根据题目描述来进行代码的编写,所以考查的是代码能力。
✏️ 思路解析
读入题目给出的n,之后用 while循环语句反复判断n是否为1:
①如果n为1,则退出循环。
②如果n不为1,则判断n是否为偶数,如果是偶数,则令n除以2;否则令n为(3 * n+1)/2。之后令计数器step加1。
这样当退出循环时,step 的值就是需要的答案。
✨代码实现
importjava.util.Scanner;//PAT001 https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528classSolution{publicint n,step=0;publicvoidcalacStep(){Scanner scanner =newScanner(System.in);
n = scanner.nextInt();while( n !=1){if(n %2==0){
n = n/2;}else{
n =(3*n +1)/2;}
step++;}System.out.println(step);}}publicclassMain{publicstaticvoidmain(String[] args){Solution s =newSolution();
s.calacStep();}}
版权归原作者 每天都要努力的小颓废呀 所有, 如有侵权,请联系我们删除。