求助WA on:#6
查看原帖
求助WA on:#6
213420
PRAGMATISM楼主2022/11/14 19:40

rt,思路和第一篇题解差不多

#include <bits/stdc++.h>
using namespace std;
char a[100000005];
long long n,k;
void erasee(int x)//暴力删除
{
	for(int i=x;i<k;i++)
	{
		a[i]=a[i+1];
	}
	k--;
}
int main()
{
	cin>>a;
	k=strlen(a);//记位数
	cin>>n;
	while(n--)
	{
		bool flag=false;
		if(a[0]>a[1])//判首位
		{
			erasee(0);//删数
			continue;
		}
		else
		{
			for(int i=1;i<k-1;i++)
			{
				if(a[i]>=a[i-1]&&a[i]>=a[i+1])//判山峰
				{
					flag=true;
					erasee(i);
					break;
				}
			}
			if(!flag)
			{
				k--;
			}
		}
	}
	bool flag=false;//判初始0
	for(int i=0;i<k;i++)
	{
		if(a[i]=='0'&&!flag)//判初始0
		{
			continue;
		}
		else
		{
			flag=true;
			cout<<a[i];
		}
	}
	if(!flag)//最后一个点输入:10 1
	{
		cout<<"0";
	}
	return 0;
}

2022/11/14 19:40
加载中...