|
|||||||
|
|
|
![]() |
|
|
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: 19:57.




















