Tabla de contenido
Copa Lanqiao 2023 14a Competencia Provincial Preguntas reales: números más pequeños
Copa Lanqiao 2023 14a Competencia Provincial Preguntas reales: números más pequeños
Límite de tiempo: 3 s Límite de memoria: 320 MB Envía: 895 Resuelve: 303
Descripción de la pregunta
Xiaolan tiene una cadena de longitud n y que consta solo de caracteres numéricos 0 ∼ 9, con subíndices de 0 a n − 1. Puedes considerarlo como un número decimal num con n dígitos. Xiaolan puede comenzar desde Seleccione una subcadena continua de num e invertir la subcadena, como máximo una vez. Xiaolan quiere invertir la subcadena seleccionada y luego colocarla en la posición original para obtener un nuevo número numnew que satisfaga la condición numnew < num. Ayúdelo a calcular cuántas opciones diferentes de selección de subcadenas hay. Siempre que las posiciones de la Dos subcadenas en num no son exactamente iguales, las consideramos soluciones diferentes.
Tenga en cuenta que permitimos la existencia de ceros a la izquierda, es decir, el bit más alto del número puede ser 0, lo cual es legal.
Formato de entrada
Ingrese una línea que contenga una cadena de longitud n que represente num (que contenga solo caracteres numéricos 0 ∼ 9),
Los subíndices de izquierda a derecha son 0 ∼ n − 1.
Formato de salida
Una línea de salida contiene un número entero que representa la respuesta.
Entrada de muestra
Copiar
210102
Salida de muestra
Copiar
8
pista
Hay 8 opciones diferentes en total:
1) El índice de subcadena seleccionado es 0 ∼ 1, y el número invertido = 120102 <210102;
2) El índice de subcadena seleccionado es 0 ∼ 2, y el numnew invertido = 012102 <210102;
3) El índice de subcadena seleccionado es 0 ∼ 3, y el número invertido = 101202 <210102;
4) El índice de subcadena seleccionado es 0 ∼ 4, y el número invertido = 010122 <210102;
5) El índice de subcadena seleccionado es 0 ∼ 5, y el número invertido = 201012 <210102;
6) El índice de subcadena seleccionado es 1 ∼ 2, y el número invertido = 201102 <210102;
7) El subíndice de subcadena seleccionado es 1 ∼ 4, y el numnew invertido = 201012 <210102;
8) El índice de subcadena seleccionado es 3 ∼ 4, y el número invertido = 210012 <210102;
Para el 20% de los casos de evaluación, 1 ≤ n ≤ 100;
Para el 40% de los casos de evaluación, 1 ≤ n ≤ 1000;
Para todos los casos de evaluación, 1 ≤ n ≤ 5000.
[Análisis de ideas]
Atraviese todas las posibilidades. Para una subcadena i - j, hay 3 situaciones.
(1) Si str[i] > str[j], se puede intercambiar.
(2) Si str[i] < str[j], el intercambio no es posible.
(3) Si str [i] == str [j], considere si la subcadena i + 1 --- j-1 se puede intercambiar, si se puede intercambiar, entonces la cadena atómica se puede intercambiar, de lo contrario no se puede intercambiar. intercambiado.
【Código】
import java.util.Scanner;
/**
* @ProjectName: study3
* @FileName: Ex2
* @author:HWJ
* @Data: 2023/9/17 9:22
*/
public class Ex2 {
static int ans = 0;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.next();
char[] str = s.toCharArray();
for (int right = 1; right < str.length; right++) {
for (int left = 0; left < right; left++) {
int L = left + 1;
int R = right - 1;
boolean loop = false;
while (L < R){
if(str[L] > str[R]){
loop = true;
break;
} else if (str[L] < str[R]) {
break;
}else {
L += 1;
R -= 1;
}
}
if (str[left] > str[right] || (loop && str[left] == str[right])){
ans++;
}
}
}
System.out.println(ans);
}
}