首页 > 代码库 > 【PAT_Basic日记】1005. 继续(3n+1)猜想
【PAT_Basic日记】1005. 继续(3n+1)猜想
#include <stdio.h>#include <stdlib.h>/**逻辑上的清晰和代码上的清晰要合二为一(1)首先在逻辑上一定要清晰每一步需要干什么,(2)然后在代码上以逻辑的每一步为单位来实现代码(3)思维逻辑跟不上时,用调试看看,尽量以电脑编译器的思维去想代码的实现*/int my_process(int n){ if(n%2 == 0) { n=n/2; } else { n=(3*n+1)/2; } return n;}int main(){ int k; int a[100]={0}; int *p=a; int i,j,t; int n; //input scanf("%d",&k); for(i=0;i<k;i++) { scanf("%d",&a[i]); } //process for(i=0;i<k;i++) { n=a[i]; while(n != 1) { n=my_process(n); for(j=0;j<k;j++) { if(p[j]==n) { p[j]=1; break; //break是因为测试例子中没有相同数字 } } } } //sort for(i=0;i<k;i++) for(j=0;j<k-i;j++) { if(a[j+1]>a[j]) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } } //output printf("%d",a[0]); for(i=1;i<k;i++) { if(a[i]!=1)printf(" %d",a[i]); } printf("\n"); return 0;}
【PAT_Basic日记】1005. 继续(3n+1)猜想
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。