OpenJudge——3528:最小新整数

it2022-05-05  150

第一行——咕咕咕。

第二行——记下这个题目是为了给自己个警醒,不坚持做题真的会退化的,谁能想到我花了两个小时就写了一道贪心呢?甚至一开始是八十行冗长的代码。逆水行舟,不进则退。

题目描述最小新整数

给定一个十进制正整数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 0x3f3f3f3f using 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; }

 


最新回复(0)