题解:P1106 删数问题
容易想到贪心。
题解
设
把题目转化为选
选完这个数后,再往下选最小的数就可以了。
代码
::::info[满分代码]
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 255;
int k, a[N], n, x, cnt, js;
string s;
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin >> s >> k;
for(auto i : s) a[++n] = i - '0';
cnt = n - k;
for(int i = 1;i <= cnt;i++){
int minn = 10, mini;
//找最小值
while(x + 1 + (cnt - i) <= n) x++, mini = a[x] < minn ? x : mini, minn = min(minn, a[x]);
x = mini;
if(minn == 0 && !js) continue;//注意前导零
cout << minn;//输出
js++;
}
if(!js) cout << 0;//非零数全删完了要输出0
return 0;
}
::::