黑洞数也称为陷阱数,又称“Kaprekar问题”--c代码

本文探讨了如何通过递归和数组操作优化数字序列的比较、交换和排序过程。作者展示了使用C语言实现的traversal和置换算法,以及如何通过迭代改进来寻找最大元素并调整序列。核心内容包括快速排序、冒泡排序以及在特定条件下寻找平衡序列的方法。
摘要由CSDN通过智能技术生成

#include<stdio.h>
void tran(int a[],int b[])
{
    for(int i=0;i<3;i++)
        b[i]=a[i];
}
void print(int a[])
{
    int i=0;
    if(a[i]==0) i++;
    for(;i<3;i++)
    {
        printf("%d",a[i]);
    }
}
int main(){
    int x;
    scanf("%d",&x);
    int a[3],b[3],c[3];
    int j=1;
    for(int i=2;i>=0;i--)
    {
        a[i]=x%10;
        x/=10;
    }
    
    int flag=1;
//    printf("%d\n",flag);
    while(flag)
    {
 
        printf("%d: ",j);
        if(a[0]==a[1]&&a[1]==a[2])
        {
            print(a);
            printf("-");
            print(a);
            printf("= 0");
            break;
        }
        for(int i=0;i<2;i++)
            for(int k=0;k<2-i;k++)
                if(a[k+1]>a[k])
                {
                    int tmp=a[k+1];
                    a[k+1]=a[k];
                    a[k]=tmp;
                }
        tran(a,b);
        c[0]=b[2];c[1]=b[1];c[2]=b[0];
        int d[3];
        tran(b,d); 
        for(int i=2;i>=0;i--)
        {
            if((d[i]-c[i])<0)
            {
                a[i]=d[i]+10-c[i];
                d[i-1]--;
            }
            else{
                a[i]=d[i]-c[i];
            }
        }
        print(b);
        printf(" - ");
        print(c);
        printf("=");
        print(a);
        j++;
        printf("\n");
        //printf("================\n");
        if(a[0]==4&&a[1]==9&&a[2]==5)
            flag=0;
    }
}

//自己写的也不知道对不对,大家多提提意见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值