|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
Vettore Permutazione in C
come è possibile scrivere il codice in C di un vettore permutazione che mi effettua le permuta andando a considerare solo i vertici adiacenti???
|
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
Vettore Permutazione in C
dovrei modificare il codice sottostante, potete darmi una mano non lo so fare
Codice:
/* int Chr[100]; /* vettore soluzione (permutazione) */ int Chr1[100]; /* soluzione inversa */ int nChr=0; /* numero soluzioni costruite dalla procedura esaustiva */ int Succ=1; /* flag che indica il successo della procedura esaustiva */ int n=3; /* numero vertici digrafi */ /* procedura di inizializzazione dei vettori soluzione (Chr[] e Chr1[]) */ void initChr() { int i=0; for(i=0;i<n;i++) { Chr[i]=n; Chr1[i]=n; } } /* procedura di stampa di Chr[] */ void stampaVett() { int i=0; for(i=0;i<n;i++) printf ("%d ",Chr[i]); printf("\n"); } /* procedura esaustiva di calcolo soluzioni */ /* metto 0 nella prima posizione e generola permutazione su 1 2, poi metto 1 nella prima posizione e genero la permutazione su 0 2, ed infine metto 2 nella prima posizione e genero la permutazione su 0 1 , */ void genTPerm(int k) { int i=0; if(k>(n-1)) { stampaVett(); /* verifica se la soluzione trovata è un ciclo: se si succ=1 e termina genTPerm */ nChr++; if(nChr>n) { Succ=0; return ; } } else for(i=0;i<n;i++) {if(Chr1[i]==n) {Chr[k]=i; Chr1[i]=k; genTPerm(k+1); Chr1[i]=n; Chr[k]=n; } } } /* programma principale */ int main(void) { int i=0, k=0; /* inizializza variabili, vettori e strutture dati */ nChr = 0; initChr(); /* procedura che inizializza Chr e Chr1 */ genTPerm(0); /* procedura esaustiva per il calcolo di soluzioni */ } |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
puoi fare un esempio? perchè onestamente non ho capito.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#4 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Spiega i problemi che hai incontrato: e vediamo se ci sono soluzioni.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Dec 2008
Città: italia
Messaggi: 80
|
Il codice funziona cosi metto 0 nella prima posizione e genero la permutazione su 1 2,poi metto 1 nella prima posizione e genero la permutazione su 0 2, ed infine metto 2 nella prima posizione e genero la permutazione su 0 1.ora dovrei fare la permutazione andando a considerare solo i vertici adiacenti.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:41.