Ajuda com combinacoes(solucoes de uma equacao)

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… :frowning:

Bom, se as variáveis puderem assumir apenas valores inteiros então você precisa pensar um pouquinho. É isso mesmo (apenas valores inteiros e positivos?)

ta ai o q eu ja fiz, fiz para r [de x®], valendo até 3, ou seja, até 3 variaveis eu consigo achar todas as solucoes possiveis
o problema eh fazer isso para r = n, ou seja, para qualquer valor de r…

as variaveis podem assumir 0, 1, 2, 3… até m[que é o resultado da equacao]

[code]
int r;
int m;
do{
r = Integer.parseInt(JOptionPane.showInputDialog("Entre com o número de variáveis ® 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);[/code]