zoukankan      html  css  js  c++  java
  • 继续3n+1猜想

    题目描述:

    解题思路:

    将一串数组放入a[]中,做循环:

    1. 如果a[i]非零,对a[i]的中间值放入一个temp[]数组

      循环temp[]

        循环a[]

          如果有temp[i]==a[j]  a[j]=0;

    得到的数组a[]中非零元素即为要求值,紧缩数组,排序输出即可

    代码如下:

     1 #include<stdio.h>
     2 int n;
     3 int temp[111];//0-100内的数,中间结果不会超过77+34次
     4 int main()
     5 {
     6     scanf("%d",&n);
     7     int a[100];
     8     for(int i=0;i<n;i++) scanf("%d",&a[i]);
     9     
    10     for(i=0;i<n;i++)   //将能被覆盖的设置为0
    11     {
    12         if(a[i]!=0)
    13         {
    14             int j=a[i],k=0;
    15             while(j!=1)
    16             {
    17                 if(j%2!=0) j=(3*j+1)/2;
    18                 else j/=2;
    19                 if(j!=1)
    20                 {
    21                     temp[k]=j;
    22                     k++;
    23                 }
    24             }
    25             for(int m=0;m<n;m++)
    26             {
    27                 if(a[m]!=0)
    28                 {
    29                     for(int j=0;j<k;j++)
    30                     {
    31                         if(temp[j]==a[m]) 
    32                         {
    33                             a[m]=0;
    34                             break;
    35                         }
    36                     }
    37                 }
    38             }
    39         }
    40     }
    41 
    42     int h=0,jj=0;
    43     for(i=0;i<n;i++)       //向前归总
    44     {
    45         
    46         if(a[i]!=0) 
    47         {
    48             h++;
    49             a[i-jj]=a[i];
    50         }
    51         else jj++;
    52     }
    53    
    54     for(i=0;i<h-1;i++)  //排序
    55     {
    56         int max=i,temp;
    57         for(int j=i+1;j<h;j++)
    58         {
    59             if(a[max]<a[j]) max=j;
    60         }
    61         if(max!=i)
    62         {
    63             temp=a[max];
    64             a[max]=a[i];
    65             a[i]=temp;
    66         }
    67     }
    68     printf("%d",a[0]);
    69     for(i=1;i<h;i++) printf(" %d",a[i]);
    70     printf("
    ");
    71     return 0;
    72 }

    运行结果:

  • 相关阅读:
    mabatis配置文件yml配置打印sql
    java使用validator检验bean
    vue项目 老是报错 气的我就不行
    注入为空
    软件测试基础
    单元测试实战
    软件测试基础
    For循环案例---九九乘法表
    软件测试基础
    软件测试基础
  • 原文地址:https://www.cnblogs.com/bboykaku/p/12590141.html
Copyright © 2011-2022 走看看