不降的数字

2499 不降的数字

 

小b有一个非负整数 N,她想请你找出 N≤N 的最大整数x,满足x各个位数上的数字是不降的。也就是说,设x的十进制表示为 a1,a2,,ama1,a2,…,am,则对于任意 1i<m1≤i<m,aiai+1ai≤ai+1。

 

输入

输入一个非负整数N。
0≤N≤10^9

输出

输出一个整数,表示答案

输入样例

332

输出样例

299
思路:从后往前扫描如果不符合降序则前一位减一,后面的贪心全变成9
#include<Iostream>
using namespace std;
int aa[15];
int main(){
    string a;
    cin>>a;
    int la=a.size();
    for(int i=0;i<la;i++){
        aa[i+1]=a[i]-48;
    }
    for(int i=la;i>1;i--){
        if(aa[i]<aa[i-1]){
            aa[i-1]--;
            for(int j=i;j<=la;j++)
            aa[j]=9;
        }
    }
    int sum=0;
    for(int i=1;i<=la;i++)
    sum=sum*10+aa[i];
    cout<<sum<<endl;
    return 0;
} 

原文地址:https://www.cnblogs.com/yfr2zaz/p/10739911.html