[Algoritmi] Comprensione algoritmo

Messaggioda ZfreS » 30/01/2021, 17:39

Buonasera! Ho questo algoritmo che usa la ricorsione per stampare coppie di numeri ad esempio, data la sequenza: 1, 2, 3, 4 e k = 2, vvengono stampati: 12, 13, 14, 23, 24, 34. Quello che non riesco a capire è l'idea dietro l'algoritmo, dao che la ricorsione è un po complicata da seguire.
Codice:
#include <iostream>
using namespace std;


void print_combination(int* combination, int k)
{
    int i;
    for (i = 0; i < k; i++) {
        cout << combination[i];
    }
    cout << "\n";
}

void find_all_combinations(int idx, int* in_use, int* combination,
    int n, int k)
{
    int i;
    if (idx == k) {
        print_combination(combination, k);
        return;
    }

    for (i = 0; i < n; i++)
    {
        if (in_use[i])
        {
            continue;
        }

        in_use[i] = 1;
        combination[idx++] = i + 1;

        find_all_combinations(idx, in_use, combination, n, k);

        combination[--idx] = 0;
        in_use[i] = 0;
    }
}

int main(void)
{
    int in_use[8] = {0};
    int curr_combination[3] = {0};
    find_all_combinations(0, in_use, curr_combination, 8, 3);

    return 0;
}


Sapreste aiutarmi per favore a capire come effettivamente esegue quel compito?
[URL=https://datesnow.life]Authentic Ladies[/URL]
ZfreS
Cannot live without
Cannot live without
 
Messaggio: 2182 di 4590
Iscritto il: 22/10/2016, 17:52
Località: Usa

Re: [Algoritmi] Comprensione algoritmo

Messaggioda apatriarca » 30/01/2021, 23:15

Il mio consiglio per cercare di capire cosa succede in questo tipo di esercizi è quello di usare un debugger oppure di stampare tutti i tuoi argomenti e variabili prima e dopo la chiamata ricorsiva.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5543 di 10438
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Algoritmi] Comprensione algoritmo

Messaggioda ZfreS » 01/02/2021, 10:48

Perfetto, seguirò il tuo consiglio. Grazie!
[URL=https://datesnow.life]Authentic Ladies[/URL]
ZfreS
Cannot live without
Cannot live without
 
Messaggio: 2183 di 4590
Iscritto il: 22/10/2016, 17:52
Località: Usa


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite