【Luogu_P1106】刪數問題
阿新 • • 發佈:2021-02-10
技術標籤:題解
思路:
首先我們想到的是直接刪掉最大的數,可是發現錯了,舉個反例就知道了:
2639 1
顯然刪掉9不是最佳的答案
那我們考慮到底要刪掉什麼
然後又顯然要刪掉6
於是我們得出:刪掉第一個比後面一位大的數
發現舉了幾個例子都沒問題
c o d e code code
#include<iostream>
#include<cstdio>
using namespace std;
int n;
string s;
int main()
{
cin>>s>>n;
while(n--)
{
int q=0;
for (int i=0; i<s.size(); i++)
if(s[i]>s[i+1])
{
q=i;
break;
}
s.erase(q, 1);
}
int i=0;
while(s[i]=='0'&&i<s.size()-1)i++;
while(i<s.size())cout<<s[i], i++;
return 0;
}