tema
[Descripción del problema]
Si cualquier dígito de un número entero positivo no es mayor que el dígito adyacente a la derecha, se le llama un número creciente de dígitos. Por ejemplo, 1135 es un número creciente de dígitos y 1024 no es un número creciente de dígitos.
Dado un entero positivo n, ¿cuántos dígitos aumentan entre los enteros 1 an?
[Formato de entrada]
La primera línea de entrada contiene un número entero n.
[Formato de salida] La
línea de salida contiene un número entero para indicar la respuesta.
[Entrada de muestra]
30
[Salida de muestra]
26
[Escala y convención
de casos de uso de evaluación ] Para el 40% de los casos de uso de evaluación, 1 <= n <= 1000.
Para el 80% de los casos de prueba, 1 <= n <= 100000.
Para todos los casos de medición, 1 <= n <= 1000000.
Ideas para resolver problemas
Opinión personal humilde: no pensé en la recursividad cuando lo escribí, así que al resolver el problema, convertí el número en una matriz de tipo char para juzgar. (Personalmente creo que debería ser más fácil de entender que la recursividad)
Precauciones
1 a 9 no requieren juicio
responder
n = 1000: 219
n = 100000: 2001
n = 1000000: 5004
Código
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int count=0;
for(int i=1;i<=n;i++){
if(f(i)){
//调用f
count++;
}
}
System.out.println(count);
}
public static boolean f(int i){
if(i<10){
//1到9不需要进行判断
return true;
}else{
char []s =(i+"").toCharArray();//转换为char数组
for(int j=0;j<s.length-1;j++){
//判断
if(s[j]>s[j+1]){
return false;
}
}
}
return true;
}
}