第一行——咕咕咕。
第二行——记下这个题目是为了给自己个警醒,不坚持做题真的会退化的,谁能想到我花了两个小时就写了一道贪心呢?甚至一开始是八十行冗长的代码。逆水行舟,不进则退。
题目描述最小新整数
给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。
现在从m位中删除k位(0<k < m),求生成的新整数最小为多少?
例如: n = 9128456, k = 2, 则生成的新整数最小为12456
思路:从前往后删除最大的
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cctype>
#define ll long long
#define maxn 0x3f3f3f3fusing namespace std;bool v[15];
string s;
int l;
int k;void panduan()
{for(int j = 0; j < k; ++j){string ans = "";l = s.length();for(int i = 0; i < l; ++i){if(s[i]>s[i+1]){ans += s.substr(0,i);ans += s.substr(i+1);s = ans;break;}}}cout<<s<<'\n';
}int main()
{int t;scanf("%d",&t);getchar();while(t--){cin>>s;scanf("%d",&k);panduan();}return 0;
}