Supongo que AP significa progresión aritmética.
Daré el pseudocódigo.
int diff [];
- ¿Cuáles son las características de un algoritmo codicioso?
- ¿Qué es un algoritmo eficiente para encontrar un circuito euleriano en un gráfico no dirigido?
- ¿Qué algoritmo de clasificación es eficiente para grandes datos y por qué?
- ¿Cuál es un mejor enfoque al aprender algoritmos y estructuras de datos, primero la implementación o el primer análisis?
- Cómo implementar consultas mínimas de rango bidimensional con una complejidad de O (1) por consulta
int array [];
for (int i = 0; i <array.length; i ++) {
diff [i] = matriz [i + 1] -array [i];
}
// Ahora tenemos todas las diferencias en la matriz de diferencias.
// Veamos cuántas progresiones hay y su diferencia común y elemento inicial, tamaño.
int cuenta [];
int commDiff [];
int startIndex [];
for (int j = 0; j <diff.size; j ++) {
if (diff [j] == diff [j + 1]) {
// Incremento de conteo …
count [count.size-1] = count [count.size-1] +1;
}más{
// Inicio de una nueva verificación …
// Al menos será un AP con un término …
cuenta [cuenta.tamaño] = 1;
commDiff [commDiff.size] = 0;
// El índice comienza desde 0 en la matriz
startIndex [startIndex.size] = count.size-1;
}
// Ahora tenemos todos los detalles en matrices …
// Encuentra el más largo …
int más largo = cuenta [0];
para (int k = 0; k <cuenta [k]; cuenta ++) {
if (cuenta [k]> = más largo) {
// Si hay más de 1 más largo …
// Se tomará el último más largo.
índice más largo = k;
}
}
Ahora imprima todos los detalles …
Imprimir (“AP más largo:” + “, Longitud:” + más largo [índice más largo] + ”Diferencia común:” + commDiff [índice más largo] + ”Índice de inicio:” + índice de inicio [índice más largo]