Galera estou fazendo um trabalho e estou precisando de uma ajudinha
tenho que desenvolver um algoritmo que leia uma palavra e imprima todas as possibilidades de combinação dessa palavra…
Vou mostrar um exemplo aqui em baixo
tipo
Informe a palavra: abc
o programa deve imprimir:
abc
acb
bac
bca
cab
cba
E tem que ser na linguagem java espero que voces possam me ajudar…
desde ja agradeço!!!
1 - O tópico foi duplicado
2 - O que você já fez?
3 - Qual a dúvida?
4 - Não achou NADA no http://www.google.com.br ?
Já fez algo? ou está no zero?
pois pedir dessa maneira ninguem vai querer dar o codigo prontu neh neguinho! ai tbm é palhaçada! :evil:
[code]package permutacao;
import java.util.ArrayList;
public class Permutacao {
public static void main(String[] args) {
ArrayList lista = new ArrayList();
lista.add("1");
lista.add("2");
lista.add("3");
ArrayList lpermutada =permuta(lista);
for (int i=0;i<lpermutada.size();i++){
String[]teste=(String[])lpermutada.get(i);
System.out.print("\n");
for(int j=0;j<teste.length;j++){
System.out.print(teste[j]);
}
}
System.exit(0);
}
private static int fatorial(int num){
int valor=1;
for (int i=1;i<=num;i++){
valor=valor*i;
}
return valor;
}
private static ArrayList permuta(ArrayList lista){
ArrayList lperm = new ArrayList();
ArrayList permutacoes = new ArrayList();
int n=lista.size();
int nrPerm=fatorial(n);
int vaux[]=new int[n-1];
int posBco[]=new int[n-1];
for(int i=0;i<n-1;i++){
vaux[i]=fatorial(n-1-i);
}
for(int k=0;k<nrPerm;k++){
for(int i=0;i<n-1;i++){
posBco[i]=0;
}
int soma_k=k;
int multiplicando=n-1;
int indice=0;
while(soma_k>0){
int multiplicacao=vaux[indice]*multiplicando;
if(multiplicacao<=soma_k){
soma_k=soma_k-multiplicacao;
posBco[indice]=multiplicando;
multiplicando=n-1;
indice++;
}else{
multiplicando--;
if(multiplicando==0){
indice++;
multiplicando=n-1;
}
}
}
lperm.add(posBco.clone());
}
//inicia a permutação
for(int k=0;k<lperm.size();k++){
int indice=n-1;
int[]posicoes=(int[])lperm.get(k);
String [] individuo = new String[n];
for(int i=0;i<n;i++){
individuo[i]="";
}
int id=0;
for(int i=0;i<posicoes.length;i++){
int posicao=posicoes[i];
int vazio=0;
while(vazio<posicao){
if(individuo[id].equals("")){
vazio++;
}
id++;
}
while(individuo[id].equals("")==false){
id++;
}
individuo[id]=(String)lista.get(indice);
id=0;
while(individuo[id].equals("")==false){
id++;
}
indice--;
}
//último
for(int i=0;i<individuo.length;i++){
if(individuo[i].equals("")){
individuo[i]=(String)lista.get(0);
}
}
permutacoes.add(individuo.clone());
}
return permutacoes;
}
}
[/code]
Bom o algoritmo eu ja tenho ele aqui a minha duvida agora como faço para inserir os dados, no meu exemplo ja estou iniciando a minha lista com alguns valores
porem quero q esses valores sejam informados pelo usuario… talvez minha pergunta seja ate boba, mas nao estou muito acostumado a programar em java…
Desde ja agradeço a quem puder ajudar… Abraço!!!
Visualmente, use o
JOptionPane.showInputDialog("Valor");
Ele retorna uma String.
No console, pesquise sobre a classe Scanner