Visualizzazione dei risultati da 1 a 10 su 30

Visualizzazione discussione

  1. #21
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Io almeno un algoritmo che funziona l'ho trovato, anche se ha complessità O(n!) che è uno degli schifi più schifosi che si possa immaginare.

    a te

    Andiamo sul personale

    Codice PHP:
    abstract class IResettableArray
    {
        protected 
    $array;

        public function 
    reset()
        {
            
    $this->array = [];
        }
    }

    class 
    IntegrableArray extends IResettableArray
    {
        public function 
    __construct(array $arr)
        {
            foreach(
    $arr as $num)
                
    $this->add($num);
        }

        public function 
    add($e)
        {
            if(
    is_numeric($e))
                
    $this->array[] = $e;
            else
                throw new 
    Exception("Sono permessi solo numeri");
        }

        public function 
    count()
        {
            return 
    count($this->array);
        }

        public function 
    getArray()
        {
            return 
    $this->array;
        }
    }

    class 
    MaxUniqueSumBuilder extends IResettableArray
    {
        public function 
    computeSum()
        {
            
    $maxs array_map('max',$this->array);
            
    $sum = [];

            foreach(
    $this->array as $k => $arr)
            {
                
    $max max($arr);
                unset(
    $maxs[$k]);

                while(
    is_numeric($max) && in_array($max,$maxs))
                {
                    
    $arr array_diff($arr,[$max]);
                    
    $max count($arr)>max($arr) : false;
                }

                if(
    is_numeric($max)) $sum[] = $max;
            }

            return new 
    ComputedSum($sum);
        }

        public function 
    addMultiArray(array $arr)
        {
            foreach(
    $arr as $ia)
                if(
    $ia instanceof IntegrableArray)
                    
    $this->addArray($ia);
        }

        public function 
    addArray(IntegrableArray $arr)
        {
            
    $this->array[] = $arr->count()>$arr->getArray() : [0];
        }
    }

    class 
    ComputedSum extends IntegrableArray
    {
        public function 
    __construct(array $max)
        {
            
    parent::__construct($max);
        }

        public function 
    getSum()
        {
            return 
    array_sum($this->array);
        }
    }

    $array = [new IntegrableArray([30,29]),new IntegrableArray([30,23,21,20])];
    $builder = new MaxUniqueSumBuilder();
    $builder->addMultiArray($array);
    echo 
    $builder->computeSum()->getSum(); 
    Ultima modifica di RoTeam; 10-08-2014 a 17:31

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 © 2025 vBulletin Solutions, Inc. All rights reserved.