删数字问题 贪心算法 1472

题目描述

在给定的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 }

猜你喜欢

转载自www.cnblogs.com/zq-dmhy/p/11084275.html