2072删数问题

来源:互联网 发布:广州优享网络 编辑:程序博客网 时间:2024/06/06 02:26

删数问题

Time Limit: 1000MS Memory Limit: 65536KB
SubmitStatistic Discuss

Problem Description

 键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。

Input

  输入有多组 每组包括原始数n,要去掉的数字数s;

Output

 输出去掉s个数后最小的数

Example Input

178543  4

Example Output

13

思路:不改变原序列元素顺序,通过循环依次将第一个降序的元素用后一个元素覆盖掉。直至得到需要的位数。

#include<stdio.h> #include<string.h> int main(){    int i,j,m,count,len;     char a[200];     while(scanf("%s",a)!=EOF)     {        scanf("%d",&m);         while(m--)        {            len=strlen(a);            i=0;             while(i<len&&a[i]<=a[i+1])             {                 i++;             }             for(j=i;j<len;j++)             {                a[j]=a[j+1];            }         }         len=strlen(a);          i = 0;        while(a[i] == '0' && i < len)         {             i++;         }         if(i == len)         {             printf("0\n");         }         else if(i < len)         {             for(j = i; j < len; j++)             {                 printf("%c", a[j]);             }            printf("\n");         }     }     return 0; }