2020模拟题--数位递增

题目

问题描述
  一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
  给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
输入格式
  输入的第一行包含一个整数 n。
输出格式
  输出一行包含一个整数,表示答案。
样例输入
30
样例输出
26
评测用例规模与约定
  对于 40% 的评测用例,1 <= n <= 1000。
  对于 80% 的评测用例,1 <= n <= 100000。
  对于所有评测用例,1 <= n <= 1000000
import java.util.Scanner;

public class 数位递增 {
	public static int n=0,count=0;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		n=sc.nextInt();
		sc.close();
		check(0,1);
		System.out.println(count-1);
	}
	private static void check(int num, int temp) {
		// TODO Auto-generated method stub
		if(num>n)
			return;
		else{
			//System.out.println(num);
			count++;
			//System.out.println(count);
		}
		for(int i=temp;i<10;i++){
			check(num*10+i,i);
			//0,1,(1,1),(11,1),111,1返回
			//System.out.println(num);	
		}
	}

}

你可能感兴趣的:(蓝桥)