Articles of algoritmo di

C ++ string :: find complex

Perché lo string::find() implementato da c ++ non usa l’ algoritmo KMP (e non funziona in O(N + M) ) e gira in O(N * M) ? È corretto in C ++ 0x? Se la complessità della ricerca corrente non è O(N * M) , che cos’è? PS: Scusa intendo string::find() quindi quale algoritmo è […]

Come posso ordinare una mappa STL in base al valore?

Come posso implementare l’ordinamento della mappa STL in base al valore? Ad esempio, ho una mappa m : map m; m[1] = 10; m[2] = 5; m[4] = 6; m[6] = 1; Mi piacerebbe ordinare la mappa secondo il valore di m . Quindi, se stampo la mappa, mi piacerebbe ottenere il risultato come segue: […]

Qual è un buon algoritmo per determinare se un input è un quadrato perfetto?

Possibile duplicato: Il modo più veloce per determinare se la radice quadrata di un intero è un numero intero Qual è un modo per vedere se un numero è un quadrato perfetto ? bool IsPerfectSquare(long input) { // TODO } Sto usando C # ma questo è un linguaggio agnostico. Punti bonus per chiarezza e […]

Sto cercando un algoritmo semplice per DCT veloce e IDCT di matrice

Sto cercando un semplice algoritmo per eseguire rapidamente DCT (tipo 2) di una matrice di qualsiasi dimensione [NxM], e anche un algoritmo per la trasformazione inversa IDCT (chiamato anche DCT tipo 3). Ho bisogno di un algoritmo DCT-2D, ma anche un algoritmo DCT-1D è abbastanza buono perché posso usare DCT-1D per implementare DCT-2D (e IDCT-1D […]

Garanzie di avanzamento senza blocco

Aneddoticamente, ho scoperto che molti programmatori credono erroneamente che “lock-free” significhi semplicemente “programmazione concorrente senza mutex”. Di solito, c’è anche un malinteso correlato che lo scopo di scrivere codice lock-free è per prestazioni concorrenziali migliori. Naturalmente, la definizione corretta di lock-free riguarda in realtà le garanzie di progresso . Un algoritmo lock-free garantisce che almeno […]

Come generare tavole di Sudoku con soluzioni uniche

Come si genera una tavola di Sudoku con una soluzione unica? Quello che pensavo era di inizializzare una scheda a caso e quindi rimuovere alcuni numeri. Ma la mia domanda è: come posso mantenere l’unicità di una soluzione?

Generare le partizioni di un numero

Avevo bisogno di un algoritmo per generare tutte le partizioni possibili di un numero positivo e ne ho trovato uno (pubblicato come risposta), ma è un tempo esponenziale. L’algoritmo dovrebbe restituire tutti i possibili modi in cui un numero può essere express come la sum di numeri positivi minori o uguali a se stessi. Quindi, […]

Profitto massimo di vendita singola

Supponiamo di ricevere un array di n interi che rappresentano i prezzi delle azioni in un singolo giorno. Vogliamo trovare una coppia (buyDay, sellDay) , con buyDay ≤ sellDay , in modo tale che se acquistassimo lo stock su buyDay e lo vendessimo su sellDay , massimizzeremmo il nostro profitto. Chiaramente c’è una soluzione O […]

Connetti 4 verifica un algoritmo di vittoria

So che ci sono un sacco di domande riguardo al collegamento 4 per una vittoria. Il problema è che la maggior parte degli altri algoritmi fanno sì che il mio programma abbia errori di runtime, perché cercano di accedere a un indice al di fuori del mio array. Il mio algoritmo è così: private int […]

Perché quicksort è migliore di un mergesort?

Mi è stata fatta questa domanda durante un’intervista. Sono entrambi O (nlogn) eppure la maggior parte delle persone usa Quicksort invece di Mergesort. Perché?