小b有一个非负整数 N
,她想请你找出 ≤N≤N 的最大整数x,满足x各个位数上的数字是不降的。也就是说,设x的十进制表示为 a1,a2,…,ama1,a2,…,am,则对于任意 1≤i<m1≤i<m,ai≤ai+1ai≤ai+1。
输入
输入一个非负整数N。 0≤N≤10^9
输出
输出一个整数,表示答案
输入样例
332
输出样例
299
搜索
代码:
#include <iostream> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; typedef long long ll; int n; ll m; void dfs(int last,ll k) { if(k > n) return; m = max(m,k); for(int i = last;i <= 9;i ++) { dfs(i,k * 10 + i); } } int main() { scanf("%d",&n); dfs(1,0); printf("%lld",m); return 0; }