|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2006
Messaggi: 176
|
Algoritmo per scambio elementi di un array
Ciao a tutti ho un problema enorme devo cercare un algoritmo per fare determinati scambi sugli elementi di un array, qualcuno sa scrivermi uno pseudocodice implementabile in qualsiasi linguaggio?
vi spiego meglio devo fare k scambi ogni passo esempio supponiamo di avere un array t={1,0,1,1,0} i possibili scambi con k=1 sono m*n dove m sono gli 1 e n gli 0. per cui avrei un insieme di soluzioni di questo genere 01110 00111 11010 10011 11100 10101 con k=2 le soluzioni prese in analisi saranno (m*n)^2 poichè ad ogni array precedente corrispondernno m*n array Il problema è: come faccio al generico passo k ad ottenere tutte le (m*n)^k soluzioni? Sto provando ad annidare dei cilci for ma sto impazzendo... Grazie in anticipo! ![]() |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Oct 2006
Messaggi: 176
|
Allora il mio problema é che un algoritmo l'ho + o - trovato
Codice:
forall (i in INSi|v(i)=1)do forall (a in INSi|v(a)=0)do v(i):=0 v(a):=1 !a forall (b in INSi|v(b)=1) do forall (d in INSi|v(d)=0 )do v(b):=0 v(d):=1 writeln(" ") forall(j in 1..5) do write(v(j)) end-do writeln(" ") v(b):=1 v(d):=0 end-do end-do v(i):=1 v(a):=0 end-do end-do come vedete si tratta di cilci for (in un linguaggio per la programmazione lineare) anidati ma che si annidano all'interno peró non riesco a generalizzare la cosa dato che in questo caso la situazione vale solo per k=2 Nessuno sa nulla? é urgente! ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Non ho ben capito se devi fare delle permutazioni o più in generale devi fare delle disposizioni semplici.
Se mi spieghi meglio, posso provare a darti una mano.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#4 | |
Member
Iscritto dal: Oct 2006
Messaggi: 176
|
Quote:
in pratica parto da un array 10101 quindi se faccio uno scambio (livello k=1) ottengo m*n soluzioni 1k(1) : 01101 2k(1) :00111 3k(1) :11001 4k(1) :10110 5k(1) :11100 6k(1) :10110 ora per ogni elemento della lista devo fare altri m*n scambi (ora siamo al livello k=2) per cui analizzando l'espansione dell caso 1k(1) otteremo 1k(2) : 10101 2k(2) : 00111 3k(2) : 11001 4k(2) : 01011 5k(2) : 11100 6k(2) : 01110 se noti il codice che ho postato prima svolge questa operazione per k=2 in reltá io dovrei rendere dinamico il cilclo in funzione di k stampando solo le (m*n)^k soluzioni finali...Aiutooooooooooooooooooo ![]() ![]() ![]() ![]() ![]() ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:35.