给定一个正整数,去掉其中的k位数,剩下的数字按原先次序排列,如何让生成的数最小。
输入格式:
输入一个长度不超过10的正整数n,和要去掉的位数k。
输出格式:
输出n在去掉k位数后的最小生成数。
输入样例:
在这里给出一组输入。例如:
251 1
输出样例:
在这里给出相应的输出。例如:
21
从最高位往后找,如果出现52,大数在前的,就用覆盖法把大数删除掉,最后只打印剩余的位数
#include<bits/stdc++.h>
using namespace std;
int main()
{
string n;
int k;
cin>>n;
cin>>k;
int len=n.length();
for(int i=0;i<k;i++)//找k轮,i从0开始
{
for(int j=1;j<len;j++)
{
if(n[j-1]>n[j])
{
for(int k=j-1;k<=len-2;k++)
{
//n[j-1]=n[j];!!!错了错了错了
n[k]=n[k+1];
}
break;//!!!忘记加了,且加错位置了,只有满足条件才break
}
//break;这个位置第一次循环就break了
}
//len--;如果加上下面的len-k变成len
}
for(int i=0;i<len-k;i++)//12345,递增情况,5就打印不出来,54321,递减正常流程
{
cout<<n[i];
}
return 0;
}