Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 30

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    23
    Quote Originariamente inviata da RoTeam Visualizza il messaggio
    Non so se è un pò troppo complesso comunque...
    Codice PHP:
    $array = [[1,2,3],[2,2],[4,5,2,3],[1,4,2],[3,6,5]]; //20 max unico

    function SommaUnicaMassima(array $array, array &$somma){
        foreach(
    $array as $arr){
            
    $max max($arr);
            if(!
    in_array($max,$somma))
                
    $somma[] = $max;
            else
                
    SommaUnicaMassima([array_diff($arr,[$max])],$somma);
        }
    }

    $somma = [];
    SommaUnicaMassima($array$somma);
    echo 
    array_sum($somma); 
    Ciao e grazie della risposta!
    Ti dispiacerebbe commentarlo un pochino? Trovo difficoltà nell'adattarlo...
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da gfr1991 Visualizza il messaggio
    Ciao e grazie della risposta!
    Ti dispiacerebbe commentarlo un pochino? Trovo difficoltà nell'adattarlo...
    Grazie!
    Codice PHP:
    $array = [[1,2,3],[2,2],[4,5,2,3],[1,4,2],[3,6,5]]; //20 max unico

    //$array è un array multidimensionale con tutti gli array
    //$somma un array passato per riferimento dove andranno tutti i numeri più grandi
    function SommaUnicaMassima(array $array, array &$somma){
        foreach(
    $array as $arr){
            
    //trova il valore massimo
            
    $max max($arr);
            
    //se il valore non è già stato aggiunto lo aggiunge
            
    if(!in_array($max,$somma))
                
    $somma[] = $max;
            else
                
    //se il valore è già stato aggiunto lo toglie dall'array e prova a trovarne un altro in maniera ricorsiva
                
    SommaUnicaMassima([array_diff($arr,[$max])],$somma);
        }
    }

    $somma = [];
    SommaUnicaMassima($array$somma);
    //alla fine con array_sum() si sommano tutti i valori di $somma
    echo array_sum($somma); 
    Ultima modifica di RoTeam; 10-08-2014 a 15:13

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Provato con gli array
    $array = [[30,29],[30,23,21,20]];

    da comunque 53 invece che 59

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Provato con gli array
    $array = [[30,29],[30,23,21,20]];

    da comunque 53 invece che 59
    30+23 fa 53....

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    23
    Quote Originariamente inviata da RoTeam Visualizza il messaggio
    30+23 fa 53....
    Si, ma io devo avere la somma massima possibile. Quindi dovrei prendere 29 dall'array1 e 30 dall'array2, così da avere 59.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da gfr1991 Visualizza il messaggio
    Si, ma io devo avere la somma massima possibile. Quindi dovrei prendere 29 dall'array1 e 30 dall'array2, così da avere 59.
    Ma hai bisogno della somma di tutti gli elementi dell'array non solo il più grande quindi? Ho capito male io vedo di farti un altro snippet

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    23
    Quote Originariamente inviata da RoTeam Visualizza il messaggio
    Ma hai bisogno della somma di tutti gli elementi dell'array non solo il più grande quindi? Ho capito male io vedo di farti un altro snippet
    Grazie per la disponibilità innanzitutto!
    No, in realtà io ho bisogno di trovare la combinazione che, dati due array, mi restituisca la somma più alta fra i due prendendo UNO E UN SOLO valore per ogni array, senza possibilità di usare un valore due volte.

    Se ho per esempio

    a= 30
    b= 29
    c= 20
    d= 10
    e= 5

    e ho

    array1 (a, b, c)
    array2 (a, c, d)

    Il codice dovrebbe essere in grado di prendere dall'array 1 il valore B (cioè 29), e dall'array 2 il valore A (cioè 30), perchè questa è la combinazione che restituisce il valore massimo della somma array1+array2!

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    E' quello che ti ho detto prima, devi testare tutte le combinazioni possibili, invece di scrivere a mano tutte le combinazioni puoi automatizzare la cosa usando dei cicli.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.