删数问题

来源:互联网 发布:淘宝拍婚纱照靠谱吗 编辑:程序博客网 时间:2024/06/03 15:16

删数问题

Time Limit: 1000MS Memory Limit: 65536KB
SubmitStatistic

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 ,len ,n;    char s[110];    while(scanf("%s %d",s,&n)!=EOF)    {        while(n)        {             len = strlen(s);             i = 0;             while(i<len&&s[i]<=s[i+1])     递增到递减的数字               i++;                                    while(i<len)             {               s[i] = s[i+1];               删去这个数字               i++;             }              n--;                                 }         while(s[0]=='0')         {             while(i<len)             {                 s[i]= s[i+1];          全部删除完之后讨论前面缀有零的情况                 i++;             }             i = 0;         }         if(s[0]=='\0')                如果都是零 且都删除完了 '\0'就是字符串结束的标志            printf("0\n");         else         printf("%s\n",s);            没有删除完就输出    }    return 0;}

0 0