Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    24

    permutazioni di stringhe

    ciao a tutti! credo sia la prima volta che scrivo qua, perciò mandò un saluto a tutti!

    dunque, ho un problema sulle permutazioni, ma soprattutto sulla stampa di esse..
    vi posto il codice:
    codice:
    //generare tutte le permutazioni di una stringa con una procedura ad
    //esaurimento
    
    public class permuta {
    
    	public static void perm (String [] v)
    	{  
    		if (v.length<=1) System.out.println ("stringa lunga 1"+v);
    		else{
    			for(int i=v.length-1;i>=v.length;i--){
    				 String  temp=v[i];v[i]=v[i-1];v[i-1]=temp;
    				 System.out.println("1chiamata "+v[i]);
    				 perm(v);
    				 System.out.println();
    				 temp=v[i];v[i]=v[i-1];v[i-1]=temp;
    				 System.out.println("2chiamata "+v[i]);
    			}	  			
    		    }
    	}
    	
    	public static void main (String [] args)
    	{
    		String[] s= {"c","i","a","o"};
    		perm(s);	
    	}
    }
    credo funzioni, non mi da errori, l'unico problema è che mi da un output vuoto.

    ancor piu strano è che se modifico il main cosi


    codice:
    public static void main (String [] args)
    	{
    		String[] s= {"c","i","a","o"};
    		System.out.println(perm(s));	
    	}
    mi da errore sul println (?!?!?!?!?!?!) ritornandomi

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method println(boolean) in the type PrintStream is not applicable for the arguments (void)

    che posso fare?
    grazie a tutti....!
    esistono 10 modi di sapere il binario:
    o lo sai o non lo sai...

  2. #2

    Re: permutazioni di stringhe

    Originariamente inviato da _*m3c4*_
    ancor piu strano è che se modifico il main cosi
    codice:
    public static void main (String [] args)
    	{
    		String[] s= {"c","i","a","o"};
    		System.out.println(perm(s));	
    	}
    mi da errore sul println (?!?!?!?!?!?!) ritornandomi

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method println(boolean) in the type PrintStream is not applicable for the arguments (void)
    Il metodo perm restituisce void, cioè niente...quindi se lo passi al metodo println, che si aspetta un oggetto, viene generato un errore di compilazione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    24
    ok, ma il mio problema è che eseguendo perm(s); non mi stampa niente a schermo, nonostante ci siano ben due println all'interno del metodo!
    il println nel main era una prova..
    esistono 10 modi di sapere il binario:
    o lo sai o non lo sai...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    24
    il mio problema è che eseguendo perm(s); non mi stampa niente a schermo, nonostante ci siano ben due println all'interno del metodo!
    il println nel main era una prova..
    esistono 10 modi di sapere il binario:
    o lo sai o non lo sai...

  5. #5
    codice:
    ...
    for(int i=v.length-1;i>=v.length;i--){
    ...
    Dubito fortemente che la condizione del ciclo for sia mai vera.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    24
    Ah ok corretto.. Ora pero mi da una serie di errori, oltre che cmq non funziona.. Credo che sia proprio sbagliato l'algoritmo come l'ho fatto..
    Allora, cancello tutto e provo a rifarlo da capo.. Avete qualche consiglio su una corretta risoluzione?
    esistono 10 modi di sapere il binario:
    o lo sai o non lo sai...

  7. #7
    Puoi provare questo metodo ricorsivo:

    codice:
    public class PermutationTest {
    
    	public PermutationTest () {
    		permutation("", "abc");
    	}
    
    	public void permutation(String startStr, String endStr) {
    		if (endStr.length() <= 1) {
    			System.out.println(startStr + endStr);
    		} else {
    			for (int i = 0; i < endStr.length(); i++) {
    				permutation(startStr + endStr.charAt(i), endStr.substring(0, i) + endStr.substring(i + 1));
    			}
    		}
    	}
    
    	public static void main(String[] s) {
    		new PermutationTest ();
    	}
    
    }
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    24
    ah ecco!! grazie!!

    solo una domanda: come mai utilizzi due parametri (startStr e endStr)?

    perdonami, magari puo essere una sciocchezza per te, ma vorrei capire!!
    esistono 10 modi di sapere il binario:
    o lo sai o non lo sai...

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.