贪心之删数问题

来源:互联网 发布:男友忙后没时间 知乎 编辑:程序博客网 时间:2024/06/05 10:01

Problem Description

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

Input

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

Output

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

Example Input

178543  4

Example Output

13

代码:

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){    char a[110];    int n, i, s, j;    while(scanf("%s", a) != EOF)    {        scanf("%d", &s);        while(s--)        {            n = strlen(a);            i = 0;            while(i < n && a[i] <= a[i+1])            {                i++;            }            for(j = i; j < n; j++)            {                a[j] = a[j+1];            }        }        int 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;}

0 0