SWUST OJ Delete Numbers(0700)

Delete Numbers(0700)

Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 1731 Accepted: 373
 
Description
给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a(n<100) 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。 对于给定的正整数a,编程计算删去k个数字后得到的最小数。

Input

第1 行是1 个正整数a。第2 行是正整数k。

Output
计算出的最小数(输出无前导0)

Sample Input
178543
4

Sample Output
13
 
Hint
 
Source
mryang
 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     char str[100];
 6     int LEN,i,j,t,flag=0,k;
 7     scanf("%s",str);
 8     scanf("%d",&k);
 9     LEN=strlen(str);
10     for(i=0;i<k;i++)
11     {
12         for(j=0;j<LEN-1;j++)
13         {
14             if(str[j]>str[j+1])
15             {
16                 for(t=j;t<LEN-1;t++)
17                 {
18                     str[t]=str[t+1];
19                 }
20             break;
21             }
22         }
23         LEN--;
24     }
25     for(i=0;i<LEN;i++)
26     {
27         if(flag==0&&str[i]=='0')
28         {}
29         else
30         {
31             printf("%c",str[i]);
32             flag=1;
33         }
34     }
35     printf("
");
36     return 0;
37 }

注:从高位开始,遇到降序则删除那个大的数,最后没有降序了,再考虑最后面的数,注意前导没有0。

原文地址:https://www.cnblogs.com/haveyoueverbeen/p/4470008.html