44分
查看原帖
44分
779007
zcx0628楼主2024/11/9 10:45

策略:贪心(删最大的,如果一样优先删前面的)。

#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

2024/11/9 10:45
加载中...