最主要的疑惑是关于删除数
如第一个测试点数据
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];
}
}