题目解答:寻找最靠前的峰值最小新整数
找那个拐点,就是删除从开始打破递增的那个数
12345627
不是删除最大的那个数7!,而是6!,1234562》1234527- 那什么规律呢,如果删掉2,
1345627
;如果删掉3,1245627
;如果删掉4,1235627
其实这个影响数大小的是,最靠前的那几个数,如果前面递增序列中间的数,后面的替补上来肯定大 - 所以还是找到打破开头递增序列那个数!!,然后删掉
注意:
- 前导0,char数组变成int就会避免这个
- 注意删除时最后补个0
using namespace std;
#include <iostream>
#include <cstring>
int main ()
{
char a[300];
cin>>a;
int n,i,v;
cin>>n;
//每次删除一个数,删n次
for(v=0;v<n;v++)
{
//依次顺次变大,如果比后面那个数大则是拐点要删除这个
for(i=0;i<strlen(a)-1;i++)
{
if(a[i]>a[i+1])
{
break;
}
}
//后面依次覆盖前面一个,删除那个拐点
for(;i<strlen(a)-1;i++)
{
a[i]=a[i+1];
}
//结尾改一下
a[strlen(a)-1]=0;
//cout<<a<<endl;
}
//如果直接cout<<a则有前置0,转换成int
int ans=0;
for(i=0;i<strlen(a);i++)
{
ans=ans*10+a[i]-'0';
}
cout<<ans;
}