Viernes 8 de Noviembre de 2024, 14:30
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Java
(Moderador:
arielb
) »
LA MOCHILA USANDO VUELTA ATRAS
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: LA MOCHILA USANDO VUELTA ATRAS (Leído 4421 veces)
jeamcarlos
Nuevo Miembro
Mensajes: 1
LA MOCHILA USANDO VUELTA ATRAS
«
en:
Miércoles 24 de Noviembre de 2010, 22:48 »
0
Buenos dias amigos en la facultad me dejaron un trabajo sobre implementar problemas en java usando backtracking(vuelta atras), como el problema de las N-Reinas, la asigacion de tareas, la pareja estable y ya los hice solo me falta el de la mochila usando este metodo la verda que no se como implementarlo con este metodo se hacerlo con voraz pero el profesor quiere usando vuelta atras. Algun experto en este metodo me puede ayudar a implementar este problema en java. Es para el viernes y se me han acumulado los trabajos de los demas curso. Una ayuda para solucionar este problema please.
Tweet
fjmc22
Nuevo Miembro
Mensajes: 18
Re: LA MOCHILA USANDO VUELTA ATRAS
«
Respuesta #1 en:
Jueves 25 de Noviembre de 2010, 21:29 »
0
Aqui lo tienes, espero que te sirva:
Código: Java
public
class
Mochila_0_1
{
public
static
int
mochila_0_1
(
int
[
]
ps,
int
[
]
bs,
int
c
)
{
int
[
]
solParcial
=
new
int
[
ps.
length
]
;
int
[
]
solOptima
=
new
int
[
ps.
length
]
;
int
bOpt
=
buscar01
(
ps.
length
-
1
,
0
, c,
0
, solParcial, solOptima,
-
1
, ps, bs, c
)
;
imprimir
(
solOptima
)
;
return
bOpt
;
}
private
static
int
buscar01
(
int
n_1,
int
i,
int
p,
int
b,
int
[
]
solParc,
int
[
]
solOpt,
int
bOpt,
int
[
]
ps,
int
[
]
bs,
int
c
)
{
for
(
int
k
=
0
;
k
<=
1
;
k
++
)
{
if
(
k
*
ps
[
i
]
<=
p
)
{
solParc
[
i
]
=
k
;
int
np
=
p
-
k
*
ps
[
i
]
;
int
nb
=
b
+
k
*
bs
[
i
]
;
if
(
i
==
n_1
)
{
if
(
nb
>
bOpt
)
{
bOpt
=
nb
;
for
(
int
j
=
0
;
j
<
ps.
length
;
j
++
)
solOpt
[
j
]
=
solParc
[
j
]
;
}
}
else
bOpt
=
buscar01
(
n_1, i
+
1
, np, nb, solParc, solOpt, bOpt, ps, bs, c
)
;
//int np = p + k*ps[i]; innecesarias porque en la primera iteración k==0
//int nb = b - k*bs[i];
}
}
return
bOpt
;
}
private
static
void
imprimir
(
int
[
]
v
)
{
for
(
int
i
=
0
;
i
<
v.
length
;
i
++
)
System
.
out
.
print
(
v
[
i
]
+
" "
)
;
System
.
out
.
println
(
)
;
}
}
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Java
(Moderador:
arielb
) »
LA MOCHILA USANDO VUELTA ATRAS