Visualizzazione dei risultati da 1 a 4 su 4

Visualizzazione discussione

  1. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da valentino46 Visualizza il messaggio
    Devo implementare un algoritmo che dato un array di interi mi stampi tutte le combinazioni semplici dei suoi elementi, ad esempio:
    [...]
    Innanzitutto bisogna precisare una cosa. La sequenza che hai postato in realtà sarebbe da vedere come l'insieme di sequenze distinte, dove ciascuna sequenza delle combinazioni ha una classe k (numero di elementi) ben precisa. E ciascuna di queste sequenze è da trattare in modo separato.

    Per una certa classe k, enumerare le combinazioni "semplici" è banale se puoi/vuoi "cablare" la classe k in una serie di cicli "annidati".

    Ad esempio:
    codice:
    public class CombinazioniSempliciClasseK_2 {
        public static void main(String[] args) {
            int[] valori = { 1, 2, 3, 4 };
            
            for (int i = 0; i < valori.length-1; i++) {
                for (int j = i+1; j < valori.length; j++) {
                    System.out.println("comb: " + valori[i] + valori[j]);
                }
            }
        }
    }

    Nel codice sopra, il numero di valori è arbitrario, puoi aggiungere 5, 6, 7 .... quanti ne vuoi. Ma la classe k è fissa a 2, perché è "cablata" nel fatto che ci sono 2 cicli annidati.

    Se non è questo che puoi/vuoi fare, c'è un'altra soluzione: realizzare un algoritmo più generico in cui la classe k può essere "arbitraria". Non è difficilissimo però devi cambiare punto di vista, la enumerazione delle combinazioni semplici devi vederla un po' (anzi molto) come se fosse un "sistema di numerazione", in cui gli indici (dei valori nell'array) progrediscono secondo una logica che puoi facilmente dedurre e poi generalizzare guardando una sequenza più o meno lunga di combinazioni per una certa classe k.
    Ultima modifica di andbin; 04-11-2013 a 11:43
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.