zoukankan      html  css  js  c++  java
  • C语言 · 数字黑洞

    算法提高 数字黑洞  
    时间限制:1.0s   内存限制:256.0MB
        
    问题描述
      任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
      1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
      2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
      3)求两个数的差,得到一个新的四位数(高位零保留)。
      重复以上过程,最后一定会得到的结果是6174。
      比如:4312 3087 8352 6174,经过三次变换,得到6174
    输入格式
      一个四位整数,输入保证四位数字不全相同
    输出格式
      一个整数,表示这个数字经过多少次变换能得到6174
    样例输入
    4312
    样例输出
    3
     
    目的明确,题意很清晰的。
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 int ans=0;
     5 void sheng(int a[]){
     6     for(int i=0;i<4-1;i++){
     7         for(int j=0;j<4-i-1;j++){
     8             if(a[j]>a[j+1]){
     9                 int t = a[j];
    10                 a[j] = a[j+1];
    11                 a[j+1] = t;
    12             }
    13         }
    14     }
    15 }
    16 void jiang(int a[]){
    17     for(int i=0;i<4-1;i++){
    18         for(int j=0;j<4-i-1;j++){
    19             if(a[j]<a[j+1]){
    20                 int t = a[j];
    21                 a[j] = a[j+1];
    22                 a[j+1] = t;
    23             }
    24         }
    25     }
    26 }
    27 int tomax(int num){
    28     int a[4]={0};
    29     a[0] = num/1000%10;//千位 
    30     a[1] = num/100%10;//百位 
    31     a[2] = num/10%10;//十位 
    32     a[3] = num%10;//个位 
    33     jiang(a) ;
    34     return a[0]*1000+a[1]*100+a[2]*10+a[3];
    35 }
    36 int tomin(int num){
    37     int a[4]={0};
    38     a[0] = num/1000%10;//千位 
    39     a[1] = num/100%10;//百位 
    40     a[2] = num/10%10;//十位 
    41     a[3] = num%10;//个位 
    42     sheng(a) ;
    43     return a[0]*1000+a[1]*100+a[2]*10+a[3];
    44 }
    45 void dfs(int num){
    46     if(num==6174){
    47         return;
    48     }
    49     num=tomax(num)-tomin(num);
    50     ans++;
    51     dfs(num);
    52 }
    53 int main(){
    54     int num;
    55     scanf("%d",&num);
    56     dfs(num);
    57     printf("%d",ans);
    58     return 0;
    59 }
  • 相关阅读:
    Subsets
    Reverse Linked List II
    【转】MySQL— 进阶
    【转】MySQL— 基础
    【转】Python-面向对象进阶
    【转】python f-string
    【转】Python基础-封装与扩展、静态方法和类方法
    【转】HTML
    【转】HTTP
    【转】Python3 configparse模块(配置)
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6670544.html
Copyright © 2011-2022 走看看