策略:贪心(删最大的,如果一样优先删前面的)。
#include<bits/stdc++.h>
using namespace std;
bool vis[1001];
int main(){
string n;int k;
memset(vis,true,sizeof(vis));
cin>>n>>k;
for(int i=0;i<k;i++){
int maxn=-1,maxi=-1;
for(int j=0;j<n.size();j++){
if(maxn<n[j]-'0'&&vis[j]){
maxn=n[j]-'0';
maxi=j;
}
}
vis[maxi]=false;
}
for(int i=0;i<n.size();i++){
if(vis[i]){
cout<<n[i];
}
}
return 0;
}
提示:样例对了,1、3、7号对了。
orz