View Full Version : Algoritmo per scambio elementi di un array
superciccio14
12-02-2007, 22:23
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! :help:
superciccio14
13-02-2007, 09:48
Allora il mio problema é che un algoritmo l'ho + o - trovato
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!
:help: :help: :help: :doh: :doh: :doh:
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.
superciccio14
13-02-2007, 10:15
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.
dunque sono delle permutazioni ma é solo un sottoinsieme di tutte le permutazioni possibili dato che vorrei evitare gli scambi tra 0 e 0 e tra 1 e 1...
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 :help: :help: :help: :doh: :doh: :doh:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.