Ajuda com combinacoes(solucoes de uma equacao)

3 respostas
S

eu tenho uma equacao aqui, do tipo
x(1) + x(2) + x(3) + … + x(n) = m
onde (1), (2), (n) sao soh para diferenciar as variaveis, x(i) >=0 e m>0
como eu faço pra gerar todas as solucoes dessa equacao ?
eu axo que deve ser por combinacao, mas nao sei como… :cry:

3 Respostas

D

Eita num entendi nada, isso seria operação matemática??
Vc qr saber como resolver equação usando java??

S

eh assim

eu tenho uma equacao aqui,
x(1) + x(2) + x(3) + … + x(n) = m
x(1), x(2), … sao soh variaveis, poderiam ser a, b, c, qualquer coisa
essas variaves podem assumir valores naturais, x(i) >=0 e m(tambem valores naturais)>0

eu quero fazer um programa que, com o usuario entrando com n e m, ele consiga mostrar todas as solucoes possiveis
entendeu ? :slight_smile:

S

ta ai o que eu fiz ateh agora, soh consegui fazer aparecerem as solucoes para quando r>4
como r pode ser qualquer numero inteiro positivo, tem que ser feita uma regra geral para quando r=n, o q eu nao estou conseguindo fazer :cry:

int r;
        int m;
        do{
            r = Integer.parseInt(JOptionPane.showInputDialog("Entre com o número de variáveis (r) da equação(deve ser maior que 0): "));
        } while(r<=0);
        do{
            m = Integer.parseInt(JOptionPane.showInputDialog("Digite o resultado (m) da equação(deve ser maior que 0): "));
        } while(m<=0);
        
        int variavel[] = new int[r];        
       
        int nSolucoes = 0;
        String solucao = "";
            if(r==1)
                JOptionPane.showMessageDialog(null, "A única solução possível para m = "+m+" e r = "+r+" é x = "+m+".");
            else if(r==2){                    
                for(variavel[0] = 0; variavel[0]<=m ; variavel[0]++){
                    variavel[1] = m-variavel[0];
                    solucao += variavel[0]+"  -  "+variavel[1]+".\n";
                    nSolucoes++;                    
                }
            }
            else if(r==3){
                for(variavel[0] = 0; variavel[0]<=m ; variavel[0]++){
                    for(variavel[1] = 0; variavel[1]<=(m-variavel[0]) ; variavel[1]++){
                        variavel[2] = m - variavel[0] - variavel[1];
                        solucao += variavel[0]+"  -  "+variavel[1]+"  -  "+variavel[2]+".\n";
                        nSolucoes++;                        
                    }
                }
            }
        if(r==1)
            System.exit(0);
        else
            JOptionPane.showMessageDialog(null, "O número de soluções possíveis é: "+(nSolucoes));
        JOptionPane.showMessageDialog(null, solucao);
Criado 27 de julho de 2008
Ultima resposta 27 de jul. de 2008
Respostas 3
Participantes 2