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…
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]