删数问题(C语言实现)

来源:互联网 发布:国家省市区数据库 编辑:程序博客网 时间:2024/06/06 00:35
  1. 思路: 每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串。然后回到串首,按上述规则再删除下一个数字

  2. 代码:

#include<stdio.h>#include<string.h>#define N 100int main(){    char a[N],temp[N];    int i,j,n,k,num=0;      memset(a,'\0',sizeof(a));    memset(temp,'\0',sizeof(temp));    printf("请输入正整数:\n");    scanf("%s",a);    n=strlen(a);    printf("请输入要删除的位数:\n");    scanf("%d",&k);    if(k<=n)    {        while(num<k)        {            for(i=0;i<n-num;i++)        //找出递减区间的首个数字            {                if(a[i]>a[i+1])                {                    j=i+1;                    break;                }                else                {                    temp[i]=a[i];                }            }            for(;j<n-num;j++)           //删除找出的那个数字            {                temp[i++]=a[j];            }            num++;                      //统计删减数字个数            memset(a,'\0',sizeof(a));            strcpy(a,temp);            memset(temp,'\0',sizeof(temp));         }        printf("最后得到的最小数为:\n%s\n",a);    }    return 0;}
原创粉丝点击