Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Questione di numeri

Qualcuno potrebbe darmi un idea di come, dato un gruppo di numeri minori di
x, posso dividerlo nella minore quantità di gruppi minori di x?
es.
x=15
Numeri= 13, 12, 7, 4 ,2 , 1
Divisione =  13 -1     12 - 2     7 - 4
Grazie

Ti fai una piccola funzione ad esempio MinInt:
Function MinInt%()
  dim treturn%
  treturn% =0
   for x=0 to ubound(mynum)
     if mynum(x) > treturn% then
      treturn% = mynum(x)
    endif
  next
  MinInt = treturn%
End Function
'Richiamala cosi:
Redim mynum(quantitadinumeri%) as integer
mynum(0) = 3
mynum(1) = 5
mynum(2) = 7
result% = MinInt
'Dichiarazione Array
Global mynum() as Integer
Rivi ha scritto:



Ti ringrazio dell'aiuto ma forse sono io che non mi sono spiegato molto
bene, io ho bisogno di suddividere un array di numeri contenente un tot di
numeri in vari array contenenti parti di que numeri la cui somma deve essere
inferiore a x
Grazie

 Global mynum() as Integer, result() as Integer


array?
Ti ringrazio di nuovo ma ancora non ci siamo, provo a rispiegare tutto
io ho una array con una certa quantità imprecisata di elementi ok?
voglio dividere questo array in altri array la cui somma sia inferiore a un
dato valore X
Insomma devo trovare la soluzione ottimale per combinare i componenti che
fatturo in fatture inferiori al milione ok?
senza però fare una fattura in più se ne posso fare una in meno....
Devo solo ottenere la miglior suddivisione di un tot di numeri in gruppi la
cui somma non sia superiore a 1.000.000
Certo che se ho, x esempio:
Valori:   300    600    600    100    800    300
certo che posso dividerli così:
1) 300    300    100 = 700
2) 600
3) 600
4) 800
TOTALE= 2700
ma così otterrei 4 fatture, io invece voglio che vengano divisi così:
1) 600    300
2) 600    300
3) 800    100
TOTALE= 2700
Sono stato più chiaro?
Ti ringrazio dell'aiuto che mi hai dato sinore e che spero continuerai a
darmi

+AD4-io ho una array con una certa quantit+AOA- imprecisata di elementi ok?
+AD4-voglio dividere questo array in altri array la cui somma sia inferiore a un
+AD4-dato valore X
+AD4-Insomma devo trovare la soluzione ottimale per combinare i componenti che
+AD4-fatturo in fatture inferiori al milione ok?
+AD4-senza per+API- fare una fattura in pi+APk- se ne posso fare una in meno....
+AD4-Devo solo ottenere la miglior suddivisione di un tot di numeri in gruppi la
+AD4-cui somma non sia superiore a 1.000.000
+AD4-
+AD4-Certo che se ho, x esempio:
+AD4-
+AD4-Valori:   300    600    600    100    800    300
+AD4-certo che posso dividerli cos+AOw-:
+AD4-1) 300    300    100 +AD0- 700
+AD4-2) 600
+AD4-3) 600
+AD4-4) 800
+AD4-TOTALE+AD0- 2700
+AD4-ma cos+AOw- otterrei 4 fatture, io invece voglio che vengano divisi cos+AOw-:
+AD4-1) 600    300
+AD4-2) 600    300
+AD4-3) 800    100
+AD4-TOTALE+AD0- 2700
+AD4-
Prova a vedere cosa succede se fai cosi':(tot+AD0-1.000.000)
consideriamo l'array ordinato per valori crescenti. Si prende l'ultimo
valore e si somma al primo, se e' +ADw-tot si prova ad aggiungere il terzo e
cosi' via(nx), fino a che risulti +AD4-tot. Poi si prende il penultimo e si
somma a nx+-1, si confronta e si seguita. Con questo metodo tutti gli
elementi +AD4-tot avrebbero una fattura a parte cosi' come tutti gli elementi
per cui ntot+-n1+AD4-tot (in questo caso ntot). Ti ripropongo il tuo esempio:
n1+AD0-100  n2+AD0-300  n3+AD0-300  n4+AD0-600 n5+AD0-600 n6+AD0-800
n6+-n1+ADw-tot ---+AD4- n6+-n1+-n2+AD4-tot  1) 800+-100
n5+-n2+ADw-tot ---+AD4- n5+-n2+-n3+AD4-tot  2) 600+-300
n4+-n3+ADw-tot                              3) 600+-300
Nel caso in cui n4+-n3+AD4-tot avresti due fatture distinte. L'inconveniente
maggiore potrebbe aversi nel caso in cui rimanga solo un valore 'centrale'
piccolo.
Spero di esserti stato di aiuto
Massimo

...


Salve. 
Questo problema dovrebbe essere esattamente "il problema dello zaino"
che si impara a risolvere appena si studiano "algoritmi e strutture
dati" all'università se non riesci a risolvere fammi sapere che cerco di
trovare il libro e ti faccio avere il paragrafo che ti interessa.
arrilegerci a tutti.
MaxGi ha scritto:


Ti sarei grato se potesso cercarlo e darmi una mano, sai, faccio ancora 3°
Scientifico e non mi sono ancora cimentato in in "algoritmi e strutture
dati" mi spiace....   vedrò di aggiornarmi...
Grazie ancora