删数问题(贪心问题)SDUT OJ题

来源:互联网 发布:牛奶 知乎 编辑:程序博客网 时间:2024/04/28 15:09

删数问题

Time Limit: 1000MSMemory Limit: 65536KB

Problem Description

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

Input

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

Output

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

Example Input

178543  4

Example Output

13

Hint

代码如下:

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



1 0