求助,只过了两个测试点
  • 板块P1106 删数问题
  • 楼主闻柒
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/5/18 13:56
  • 上次更新2023/10/28 01:12:07
查看原帖
求助,只过了两个测试点
273081
闻柒楼主2022/5/18 13:56

最主要的疑惑是关于删除数

如第一个测试点数据

178543

4

不会先删除8而是先删除3

求助各位帮忙解读问题所在,已经在相应地方写上注释

#include<bits/stdc++.h>
using namespace std;
char n[241];
int num[241],s,len,t;
//数组前移 
void yishu(int i)
{
	for(int j=i;j<=len-1;j++)
	{
		num[j]=num[j+1];
	}
	len--;
}
void shanshu()
{
	while(t!=s)//满足删除数量退出 
	{
		for(int i=1;i<=len-1;i++)
		{
			if(t==s) break;
			if(num[i]>num[i+1])
			{
				yishu(i);
				i=1;
				t++;//删掉一个就从头遍历 
			}else
			{
				len--;
				t++;//删最后一位 
			}
		}
	}
}
int main()
{
	cin>>n;
	cin>>s;
	len=strlen(n);
	//转换数组
	for(int i=1;i<=len;i++) 
	{
		num[i]=n[i-1]-'0';
	}
	//执行删数 
	shanshu();
	//去零 
	int i=1;
	while(i==0&&len>1) 
	{
		yishu(i);
	}
	//输出 
	for(int i=1;i<=len;i++)
	{
		cout<<num[i];
	}
}
2022/5/18 13:56
加载中...