Sei sulla pagina 1di 2

package backtrackingejemplo4;

public class BacktrackingEjemplo4 {

public static void main(String[] args) {


int []numeros = new int[]{2,3,4,5,7,13,17,9,20};
int []res = new int[4];
boolean r = fbck(numeros,res);
}

private static boolean fbck(int[] numeros, int[] res) {


if(f1(res))
return false;
else if(f2(res))
{
imprimir(res,0);
return true;
}
else
{
int j=0;
while(res[j]!=0)
j++;

for (int i = 0; i < numeros.length; i++) {


if(numeros[i]>0)
{
res[j]=numeros[i];
numeros[i]=0;
boolean r = fbck(numeros,res);
numeros[i]=res[j];
res[j]=0;
}
}

return false;
}
}

private static void imprimir(int[] res, int i) {


if(i<res.length)
{
System.out.print(" " + res[i]);
imprimir(res,i+1);
}
else
System.out.println();
}

private static boolean f2(int[] res) {


for (int i = 0; i < res.length; i++) {
if(res[i]==0)
return false;
}
return true;
}

private static boolean f1(int[] res) {


for (int i = 0; i < res.length; i++) {
for (int j = 0; j < res.length; j++) {
if(res[j]!=res[i] && res[j]!=0 && res[i]!=0)
{
if(res[j]>res[i] && res[j]%res[i]==0)
return true;
if(res[i]>res[j] && res[i]%res[j]==0)
return true;
}
}
}
return false;
}
}

Potrebbero piacerti anche