题目描述
在给定的n个数字的数字串中,删除其中k(k<n)个数字后,剩下的数字按原次序组成一个新的正整数。请确定删除方案,使得剩下的数字组成的新正整数最大.
输入描述
多组输入,每组输入一个多位整数n和一个表示删除数字个数的整数k。 k < 50
输出描述
对于每组输入,输出剩下的最大正整数
样例输入
762191754639820463 6
样例输出
975639820463
思想:从头开始,删除左边比右边小的数字
注意字符串的操作方法 s.erase(位置,个数)删除
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main(){ 5 int n; 6 string s; 7 while(cin>>s>>n){ 8 int a,b,l,i,j,k,fg; 9 l=s.length(); 10 for(i=0;i<n;i++){ 11 for(j=0;j<l-1;j++){ 12 a=s[j]-'0'; 13 b=s[j+1]-'0'; 14 if(a<b){ 15 s.erase(j,1); 16 l=l-1; 17 break; 18 } 19 } 20 } 21 cout<<s<<endl; 22 } 23 return 0; 24 }