删数问题(C语言实现)

  1. 思路: 每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串。然后回到串首,按上述规则再删除下一个数字

  2. 代码:

#include
#include
#define N 100

int 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(numfor(i=0;i//找出递减区间的首个数字
            {
                if(a[i]>a[i+1])
                {
                    j=i+1;
                    break;
                }
                else
                {
                    temp[i]=a[i];
                }
            }
            for(;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;
}

你可能感兴趣的:(算法,c语言,搜索,删数,算法)