2619 - 删数问题
键盘输入一个高精度的正整数n(<=240位),
去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。
<br />
编程对给定的n和s,寻找一种方案,使得剩下的数最小。
Input
Output
Examples
Input
178543 4
Output
13
Solution C
#include<stdio.h> #include<string.h> int main() { char a[250],c; int n,i,stl,j=0,max; gets(a); scanf("%d",&n); stl=strlen(a); while(n>0) { c=a[j]; max=j; for(i=j+1;i<stl;i++) { if(a[i]>c) { //printf("%c",a[i]); c=a[i]; max=i; } } // printf("\n"); // printf("%c\n",a[max]); a[max]='0'-8; if(max==j) { j++; } n--; } for(i=0;i<stl;i++) { if(a[i]!='0'-8) printf("%c",a[i]); } }
Solution C++
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<string> using namespace std; int main() { string n; int s; cin>>n>>s; int len=n.length(); for(int i=1;i<=s;i++) { for(int j=0;j<len-1;j++) { if(n[j]>n[j+1]) { n.erase(j,1); break; } } len--; } for(int i=0;i<len;++i) { if(n[i]!='0') cout<<n[i]; } return 0; }