Gracias por A2A, Dan Stw
El problema se puede simplificar a la clasificación de 1 a n (o de 0 a n-1) con la clave para ordenar como una matriz dada. Por lo tanto, debe ordenar la tupla donde cada elemento tiene la forma (matriz [i], i) con el elemento clave como primero.
Si ‘Array’ es la matriz dada e ‘index’ es la matriz requerida, entonces el código C ++ debería verse así:
- Cómo escribir un programa para ingresar una cadena e imprimir el número de caracteres en minúscula y mayúscula en la cadena
- ¿Se ha encontrado alguna solución para los problemas de NP completo?
- Plegamiento de proteínas: ¿Qué algoritmos se usan en el juego Foldit?
- Cómo implementar un verificador de plagio en Java
- En plataformas de programación competitivas como TopCoder y CodeChef, ¿cómo sé que una competencia o proyecto es bueno para participar?
std :: vector Matriz;
…
…
std :: vector <std :: pair > temp (Array.size ());
para (int i = 0; i <Array.size (); i ++)
temp [i] = {Array [i], i}; // Si quieres responder en el rango de 1 a n, entonces pon temp [i] = {Array [i], i + 1};
std :: sort (temp.begin (), temp.end ());
std :: vector index (Array.size ());
for (int i = 0; i <temp.size (); i ++)
índice [i] = temp [i] .second;
Y ya terminaste con esto.