每日一练贪心——删数问题

_谦言万语 2022-04-13 19:01:47
加精

P1106 删数问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

         这道题的要我们求剩下的最小数,即让我们尽量把大的数清除,并且是先把前面较大的数清除。何为较大的数?如果属于“山峰”(该数大于两边的数),即为较大的数。题面没明确说前导0需不需要进行处理,所以我就直接交了一个代码上去,WA了,证明不需要输出前导0,所以我们需要人为清除前导0。

 

#include <bits/stdc++.h>
#define MOD 1000000007
#define INF 0x3f3f3f3f
using namespace std;
typedef long long LL;
string s;
int k;

int main() {
	cin>>s>>k;
	while(k--) {
        //由于是从左到右遍历,所以下面的if只需要判定与右边的数的关系即可
		for(int i=0; i<s.size(); i++) 
		if(s[i]>s[i+1]) {
			s.erase(i,1);//从第i个位置开始清除1个单位(字符串长度会随之改变)
			break;//清除完就下一个
		}
	}
    //处理前导0问题
	while(1) {
		if(s.size()==1) break;//如果最后一个数仍为0,就按0来输出
		if(s[0]=='0') s.erase(0,1);//如果是前导0就清掉
		else break;//没有前导0就可以输出了
	} 
	cout<<s;
	return 0;
}

 

...全文
95 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
White boy& 2022-04-14
  • 打赏
  • 举报
回复
贪心的人

50,820

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧