删数问题

来源:互联网 发布:作图软件有哪些 编辑:程序博客网 时间:2024/06/03 19:19

删数问题

给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数。
对于给定的n和k,设计一个算法,找出剩下数字组成的新数最少的删数方案。

#include <stdio.h>int main(){    int c[50];    int a,m,n=0,k,i,j,p;    printf("请输入数:\n");    scanf("%d",&a);    printf("请输入要删除的个数:\n");    scanf("%d",&k);    m=a;    while(a)            //判断输入数字的位数    {        n++;        if(a%10==a)            break;        a/=10;    }    a=m;    for(i=0;i<n;i++)    //数a拆分成数组    {        c[n-i-1]=a%10;        a/=10;    }    m=n;    for(k;k>0;k--){ //控制减的次数        for(i=0;i<n-1;i++)        {            if(c[i]>c[i+1]) //遇到递减则删掉,后面向前移一位            {                for(j=i;j<n-1;j++)//移位                {                    c[j]=c[j+1];                }                m--;                break;            }        }    }    for(i=0;i<m;i++)        printf("生成的最小数为:%d",c[i]);    printf("\n");    return 0;}/*思路:    每次删掉第一个递减的数*/
原创粉丝点击