首页 > 代码库 > 【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)猜想