题目
一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
【输入格式】
输入的第一行包含一个整数 n。
【输出格式】
输出一行包含一个整数,表示答案。
【样例输入】 30
【样例输出】 26
我的代码实现
import java.util.Scanner;
public class j1 {
static int count,n;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt;
int s1,s2,x;
while(n>0){
x = n;
do{
s1 = x%10;
x/=10;
s2 = x%10;
}while(s1>=s2&& s2!=0);
if(x==0)
count++;
n-=1;
}
System.out.println(count);
}
}
别人的代码
import java.util.Scanner;
public class j1 {
static int n, count;
public static void f(int num,int temp){
if(num>=n)
return;
count++;
for (int i = temp; i <10; i++)
f(num*10+i,i);
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
n = in.nextInt;
f1(0,1);
System.out.println(count);
}
}
还是别人的比较好,又简短又容易懂.