Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-07-2008, 02:11   #1
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
[Vari] Contest 3: La somma

Forza, muoviamo sto clock, sia del cervello che del computer.

Sia data una lista di interi disordinata (vedi fondo del post)

Esempio: 1 13 10 22 5 7 5 3 1 7 3 7

A- Base
Trovare quanti sono gli elementi che sono ripetuti almeno 2 volte. Nell'esempio e' 4 (Ci sono 4 valori diversi che sono ripetuti almeno 2 volte).
(Punti 2)
Quel e' l'occorrenza massima delle ripetizioni.
(ovvero quante volte e' ripetuto il numero che e' ripetuto per piu' volte)
Nell'esempio e' 3, perche' il 7 e' ripetuto 3 volte
(Punti 2)

B- Avanzato
Si costruisca una funzione che, dato in ingresso un intero, dica:
a. se esistono 2 qualsiasi valori della lista tali per cui la loro somma sia il valore cercato, e le "coordinate" dei 2 valori trovati. (Punti 6)
b. Utilizzando la funzione del punto a, per ciascuno dei seguenti dire se sono la somma di 2 valori della lista, e in che posizione sono tali valori: (Punti 6)

217660
222940
9999999
11155123
18185748

Nella lista d'esempio Fn(11) doverebbe restituire
true, 0, 2 (perche' il primo e il terzo valore sono 1+10=11)

Fn(12)
true, 4, 5

Fn(9)
false

Casi particolari
Fn(20)
false. Anche se 10+10 = 20 Non e' ammesso utilizzare 2 volte lo stesso valore. Devono essere 2 valori presi in posizione diversa

Fn(2)
true, 0, 8 Questa volta 1+1 = 2 e' ammesso, perche' si tratta di due UNI diversi.


C- Esperto
Dire qual e' il piu' grande intero minore di 20.000.000 tale per cui
NON sia la somma di qualsiasi 2 valori presenti nella lista (Punti 14)
Da implementarsi eventualmente come esercizio a parte, usando oppure no la funzione di cui prima, a vostra discrezione.

La complessita', per ciascun esercizio, si calcola a partire dalla sola lista/array gia' costruita, che si intende data come input.


lista dei valori:
http://www.usaupload.net/d/d0x556iuxu4
La prima linea contiene il numero di interi in questo formato
//12345//
Le linee a seguire un record per ciascun intero.
PS: Gli interi sono 100.000 (e quindi la prima riga sara' //100000//)
Si sa che sono stati cercati in modo casuale e uniforme nel range 0 - 10.010.000
(il perche' di questo 10.000 e' solo per questioni di probabilita' relativa alla domanda del 3 esercizio)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 22-07-2008 alle 10:31.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 08:38   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Avast mi segnala questo:

"HTML:Agent-L [Expl]"

quando provo a scaricare il file.

P.S. Appena ho un po' di tempo e il file con la lista di numeri provo a cimentarmi.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 09:51   #3
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Avast mi segnala questo:

"HTML:Agent-L [Expl]"

quando provo a scaricare il file.

P.S. Appena ho un po' di tempo e il file con la lista di numeri provo a cimentarmi.

mmh. E' uno zip con un file di testo... Magari c'e' qualcosa nella pagina di quel server.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 10:08   #4
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Uff... maledetto firewall aziendale! Non riesco a scaricare il file...

Va beh, ho qualche idea su come risolvere A e B, ma su C ancora non ho trovato niente di furbo...stasera provo qualcosa...

Ma usare strutture dati diverse per i vari punti è ammesso? Cioè, sono da intendersi come 3 esercizi separati o no?
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 10:24   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da shinya Guarda i messaggi
Uff... maledetto firewall aziendale! Non riesco a scaricare il file...

Va beh, ho qualche idea su come risolvere A e B, ma su C ancora non ho trovato niente di furbo...stasera provo qualcosa...

Ma usare strutture dati diverse per i vari punti è ammesso? Cioè, sono da intendersi come 3 esercizi separati o no?
Sisi', devono essere 3 esercizi separati, nel senso che ogni esercizio riparte dalla Lista di input. Poi se si vuole riutilizzare parte del codice scritto in precedenza non e' vietato.
Diciamo 3 funzioni che ricevono in input almeno una lista.
L'importante e' non barare, ovvero non fare assunzioni particolari sui dati in input.
E' stato dato come ordine di grandezze del dominio dei valori il range 0 - 10010000.
Ma se qualcuno volesse essere piu' preciso, e' possibile cercare il massimo valore della lista da utilizzare eventualmente per semplificare qualcosa, ma occorre inserire nel computo anche l'algoritmo per cercarlo.
(Ovvero non vale cercarlo a priori e poi utilizzarelo come costante).
Se tale valore massimo servisse in tutti e 3 gli esercizi, ciascun esercizio dovra' considerare la complessita' di tale ricerca.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 22-07-2008 alle 10:32.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 10:49   #6
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Però scusa non ho capito una cosa...
Nella lista di esempio...con fn(20) perchè dovrebbe tornare "false" quando ci sono il 13 e il 7 che fanno 20?
O era solo per mostrare che non si può usare lo stesso valore? Scusa la domanda scema...
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 10:57   #7
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Ciao,

per la lista dobbiamo usare un array o possiamo usare una struttura dati a piacere (array, liste concatenate, etc) ?
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 11:01   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Ciao,

per la lista dobbiamo usare un array o possiamo usare una struttura dati a piacere (array, liste concatenate, etc) ?
Quello che vuoi, ma in input e' data una Lista/Array.
Ovvero devi accettarla come input, ma subito dopo puoi farne quello che vuoi.
(Il primo passo sara' quindi la costruzione di un array o lista a partire dal file)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 12:38   #9
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Questa è la prima soluzione che mi è venuta in mente per il punto B.
Non l'ho provata con il file grande perchè dall'ufficio non riesco a scaricarlo... spero di non aver scritto troppe brutture.

Ho dovuto ordinare la lista, perchè cosi com'era al di là della forza bruta non mi veniva in mente niente di furbo... quindi c'è da aggiungere la complessità del merge sort che usa la classe Collections al suo interno, e l'inizializzazione di tutta la lista usando una class Term che racchiude il numero e la posizione originale. Sarebbe stato più semplice se i requisiti fossero stati i numeri e non le coordinate.

Il costruttore di Contest3 si prende il caso di test...

Codice:
import java.util.*;

public class Contest3 {
  public static void main(String[] args) {
    new Contest3(2);
  }
  
  public Contest3(int term) {
    List<Term> numbers = initList(Arrays.asList(1,13,10,22,5,7,5,3,1,7,3,7));
    
    int[] result = findAddends(numbers, term);
    System.out.println(result[0] + " " + result[1]);
  }
  
  private List<Term> initList(List<Integer> numbers) {
    List<Term> result = new ArrayList<Term>();
    
    for (int i = 0; i < numbers.size(); ++i) {
      result.add(this.new Term(numbers.get(i), i));
    }
    return result;
  }
  
  private int[] findAddends(List<Term> numbers, int term) {
    int[] pair = new int[2];
    
    Collections.sort(numbers);
    int i = 0, j = numbers.size() - 1, sum = 0;
    while (i < j) {
      sum = numbers.get(i).number + numbers.get(j).number;
      
      while (sum <= term && i < j) {
        sum = numbers.get(i).number + numbers.get(j).number;
        if (sum == term) {
          pair[0] = numbers.get(i).originalPosition; 
          pair[1] = numbers.get(j).originalPosition;
          return pair;
        }
        i++;
      }
      j--;
    }
    
    return pair;
  }
  
  private class Term implements Comparable<Term> {
    public Integer number;
    public int originalPosition;
    
    public Term(int number, int originalPosition) {
      this.number = number;
      this.originalPosition = originalPosition;
    }
    
    public int compareTo(Term t) {
      return number.compareTo(t.number);
    }
  }
}
Stasera provo con il file grande...

Ultima modifica di shinya : 22-07-2008 alle 14:01.
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 14:10   #10
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
La domanda sorge spontanea: a che serve questo contest?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 14:38   #11
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
La domanda sorge spontanea: a che serve questo contest?
Boh? Dato un input e una domanda trovare i modi piu' efficienti per rispondere...
Direi provare un po' di alternative che non coinvolgano la forza bruta, altrimenti un sistema come quelli che abbiamo oggi non puo' trovare le risposte in tempi decenti.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 14:53   #12
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Beh ovviamente mi preparo a ricevere innumerevoli insulti (come saprete ho solo delle misere conoscenze da studentello del primo anno), ma ho affrontato la prima parte del problema così:

Codice:
void MyList::check_occurrences() {
    map<unsigned,unsigned> occurrences;

    for (vector<unsigned>::const_iterator it = list.begin(); it != list.end(); ++it)
        ++occurrences[*it];

    map<unsigned, unsigned>::size_type count = 0;
    map<unsigned, unsigned>::const_iterator max = occurrences.begin();
    for (map<unsigned, unsigned>::const_iterator it = occurrences.begin(); it != occurrences.end(); ++it) {
        if (it->second >= 2)
	    count++;
        if (it->second > max->second)
	    max = it;
    }

    cout << "Numero elementi ripetuti almeno 2 volte: " << count << endl;
    cout << "Elemento piu' frequente: " << max->first << ' ' << max->second << endl; 
}
Dopo provo anche il punto B, ma già capisco che le mie soluzioni sono decisamente dispendiose
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg

Ultima modifica di Albi89 : 22-07-2008 alle 15:33. Motivo: Sistemato la formattazione ;)
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 15:07   #13
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da shinya Guarda i messaggi
Però scusa non ho capito una cosa...
Nella lista di esempio...con fn(20) perchè dovrebbe tornare "false" quando ci sono il 13 e il 7 che fanno 20?
O era solo per mostrare che non si può usare lo stesso valore? Scusa la domanda scema...
No, hai perfettamente ragione.
Nell'esempio avrebbe dovuto restutire true, proprio perche almeno 13+7= 20 (ma non perche' 10+10=20)
L'avevo fatto a mano e non me ne ero accorto...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 17:27   #14
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Purtroppo la mia versione dell'esercizio B è ancora assai lenta, non so se qualcuno ha provato un approccio "brute force" per compararlo, ma la mia (basata su un vector di coppie di possibili addendi) non è ancora propriamente "scattante".

Vi riporto un output di esempio del programma per confrontarlo coi vostri, appena migliorerò un po' il codice lo posterò

In quest'esecuzione ho testato tutti i valori proposti da gugoXX

Codice:
Numero elementi ripetuti almeno 2 volte: 459
Elemento piu' frequente: 6361273 4

217660 non e' scomponibile in addendi presenti nella lista

222940 non e' scomponibile in addendi presenti nella lista

9999999 e' la somma dei numeri:
6388096 in posizione 425
3611903 in posizione 70532

11155123 e' la somma dei numeri:
7525320 in posizione 123
3629803 in posizione 70500

18185748 e' la somma dei numeri:
10012786 in posizione 2023
8172962 in posizione 94669

Tempo impiegato: 608.518s
Come potete vedere il tempo di esecuzione è di circa 10 minuti, una piccola infinità.
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 17:37   #15
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
per il tempo di esecuzione in java? c'è qualche classe utile? mi basta il package poi spulcio io le api..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 18:30   #16
Giullo
Senior Member
 
L'Avatar di Giullo
 
Iscritto dal: Dec 2001
Messaggi: 702
ho provato a cimentarmi col punto 2, questo è l'output che ricevo in console

Codice:
Reading the file and building the list in 0.49909
Sorting the list in 2.415708
Looking for 217660
Looking for 222940
Looking for 9999999
9999999 found! values (7895, 9992104) at positions (3590, 37312) in 0.002228
Looking for 11155123
11155123 found! values (1078115, 10077008) at positions (38441, 92416) in 0.025468
Looking for 18185748
18185748 found! values (8099248, 10086500) at positions (64082, 60049) in 0.401179
qui il codice ruby, fondamentalmente non ho trovato al momento una soluzione migliore di quella di shinya, vediamo se stasera a mente un pò più fresca mi viene in mente qualcosa di diverso

Codice:
#!/usr/bin/ruby -w

class Contest
  
  def initialize(file)
    start_time = Time.now
    file = File.new(file, "r")
    @list_original = []
    counter = 0
    first = false
    while (line = file.gets)
      first = true and next if !first
      @list_original.push(Item.new(line.to_i, counter))
      counter += 1
    end
    elapsed = Time.now
    puts "Reading the file and building the list in #{(elapsed-start_time).to_s}"  
    file.close
    start_time = Time.now
    @list_sorted = @list_original.sort {|x,y| x.value <=> y.value }
    elapsed = Time.now
    puts "Sorting the list in #{(elapsed-start_time).to_s}"  
  end
  
  
  def search_for(num)
    puts "Looking for "+num.to_s
    start_time = Time.now
    j = @list_sorted.length-1
    i = 0
    out = []
    while i < j do
      sum = @list_sorted[i].value + @list_sorted[j].value
      while (sum <= num && i < j) do
       ival = @list_sorted[i]
       jval = @list_sorted[j]
       sum =  ival.value + jval.value
       if (sum == num)
         elapsed = Time.now
         out[0] = ival
         out[1] = jval
         puts "#{num} found! values (#{out[0].value}, #{out[1].value}) at positions (#{out[0].position}, #{out[1].position}) in #{(elapsed-start_time).to_s}"
         return out
       end
       i += 1
      end
      j -= 1
    end
    return out
  end
  
end


class Item
  
  attr_accessor :value, :position
  
  def initialize(value, position)
    @value = value
    @position = position
  end
  
end




c = Contest.new("lista.txt")
c.search_for(217660)
c.search_for(222940)
c.search_for(9999999)
c.search_for(11155123)
c.search_for(18185748)
__________________
Le mie app per iphone:
Wow Minis Match Tracker ||| Wow Minis Hit Calculator (in review )
Frieza#916 @ SC2 ||| Giullo @ Steam
Giullo è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 19:43   #17
nico159
Senior Member
 
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
Sono riuscito a fare il mio primo programmino che fa qualcosa...e per di più in Python
Almeno quattro punti li ho fatti?
Dopo vedrò come implementare il resto
Codice:
class Contest:
    numbers = []
    def __init__(self, file = None):
        if not file:
            file = 'lista.txt'
        self.__getNumbersFrom(file)
            
    def __getNumbersFrom(self, file):
        txt = open(file)
        for line in txt:
            self.numbers.append( int(line) )
        txt.close()
        
    def getRepetition(self):
        dictionaryOfAlexandria = { 'unique' : {}  }
        for number in self.numbers:
            if dictionaryOfAlexandria.has_key(number):
                dictionaryOfAlexandria[number] += 1
            else:
                if dictionaryOfAlexandria['unique'].has_key(number):
                    dictionaryOfAlexandria[number] = 2
                    del dictionaryOfAlexandria['unique'][number]
                else:
                    dictionaryOfAlexandria['unique'][number] = 1
        del dictionaryOfAlexandria['unique']
        return dictionaryOfAlexandria
                    
    def getKingOfRepetition(self):
        repetition = self.getRepetition()
        max = None
        num = None
        for number, repetition in repeated.items():
            if repetition > max:
                max = repetition
                num = number
        return (num, max)

Qualcuno ha consigli per eliminare tutti questi if?
__________________
In a world without fences, who needs Gates?
Power by: Fedora 8 - Mac OS X 10.4.11
nico159 è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 21:07   #18
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Carina l'idea dei concorsi

Questo è il mio tentativo per i due punti della parte A.
Codice:
def contest_a1(list)
  list.sort!
  
  last = nil
  last_dup = last
  count = 0
  
  list.each do |current|
    if current == last and last_dup != current then
      last_dup = current
      count += 1
    end
    last = current
  end

  return count
end
Codice:
def contest_a2(list)
  list.sort!
  
  last = nil
  count = 0
  max = 0
  
  list.each do |current|
    if current == last then
      count+=1
    else
      if max < count then
        max = count
      end
      count = 0
    end
    last = current
  end
  
  return max + 1
end
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 21:48   #19
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Esercizio B.
Mancando le closure in C++, fornisco una classe, non una funzione
Codice:
void readFile( const string& filename,  vector<int>& numbers )
{
    ifstream in(filename.c_str());
    numbers.clear();
    copy( istream_iterator<int>( in ), istream_iterator<int>(),
          back_inserter( numbers ) );
}


class Finder
{
public:
    Finder(const string& filename )
    {
        vector<int> v;
        readFile( "lista.txt", v );
        for ( unsigned int i=0 ; i<v.size() ; ++i )
        {
            s.insert( v[i] );
            index[ v[i] ] = i;
        }
        
    }
    bool findNumber( int sum, pair<int,int>& p )
    {
        for ( set<int>::const_iterator i = s.begin() ; i != s.end() ; ++i )
        {
            set<int>::const_iterator j = s.find( sum - *i );
            if ( j != s.end() )
            {
                p.first = *i;
                p.second = *j;
                return true;
            }
        }
        return false;
    }
    unsigned indexOf( int n )
    {
        return index[n];
    }

private:
    set<int> s;
    map<int,unsigned int> index;
};
La complessita' dovrebbe essere n*logn. Sulla mia macchina ci mette circa 0.25 secondi compreso il caricamento delle tabelle.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2008, 22:01   #20
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da ndakota Guarda i messaggi
per il tempo di esecuzione in java? c'è qualche classe utile? mi basta il package poi spulcio io le api..
mi rispondo da solo.. System.currentTimeMillis() che restituisce un long..
ndakota è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Amazon Haul: per i nuovi utenti 5€ di sc...
OnePlus sarà smantellata? Un repo...
TIM presenta le nuove offerte TIMVISION ...
Upgrade PC a prezzo minimo: GeForce RTX ...
Ubisoft rivela le vendite dei propri fra...
Logitech Rally AI Camera: videocamere a ...
Robot aspirapolvere Mova Z60 Ultra Rolle...
Microsoft spinge il gaming su Windows 11...
Gore Verbinski contro Unreal Engine: 'La...
6 giochi cancellati in casa Ubisoft, tra...
NVIDIA affina (di nuovo) Vera Rubin in v...
La migliore scopa elettrica low cost sce...
AMD Ryzen 7 9800X3D: nuovi casi di unit&...
ECOVACS DEEBOT MINI è tornato al ...
Oggi in sconto su Amazon ci sono gli iPh...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v