es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Valor máximo que puede ser llenado.

Estoy tratando de aprender y practicar estructuras de datos y estoy practicando programación dinámica, pero me he quedado atrapado en un problema. No sé si es un error lógico o cualquier otra cosa.

Mi declaración del problema es:

Dado un número N de cubos con L[i] pintas de líquido y un barril de capacidad C pintas, debemos encontrar la mayor cantidad de líquido que se puede poner en el barril desde ese cubo si el barril no debe desbordarse.

Este es mi código:

let V1 = [2, 3, 4, 2];
let barrel = 100;

const cache = [];
for(let i=0; i<=barrel; i++){
    cache[i] = [];
    for(let j=0; j<=V1.length; j++){
        cache[i][j] = 0;
    }
}

function findMaxDP(V1) {
    let i, j;
    let V = [0, ...V1];
    for(i=0; i<=barrel; i++){
        for(j=0; j<v.length; j++){
            if(i==0){
                cache[0][j] = 0;
            }
            if(j==0){
                cache[i][0] = 0;
            }
            else{
                if(i == v[j]){
                cache[i][j] = v[j];
            }
                if((i-cache[i][j-1]) <= v[j]){
                cache[i][j] = cache[i][j-1] + v[j];
            }
                if((i-cache[i][j-1]) != v[j]){
                cache[i][j] = cache[i][j-1];
            }   
            }
        }
    }
    return cache[barrel-1][j-1]
}

console.log(findmaxdp(v1));

estoy recibiendo cero, cualquier tipo de ayuda sería apreciada.

gracias. j++){=”” if(i=”=0){” cache[0][j]=”0;” }=”” if(j=”=0){” cache[i][0]=”0;” }=”” else{=”” if(i=”=” v[j]){=”” cache[i][j]=”V[j];” }=”” if((i-cache[i][j-1])=”” <=”V[j]){” cache[i][j]=”cache[i][j-1]” +=”” v[j];=”” }=”” if((i-cache[i][j-1])=”” !=”V[j]){” cache[i][j]=”cache[i][j-1];” }=”” }=”” }=”” }=”” return=”” cache[barrel-1][j-1]=”” }=”” console.log(findmaxdp(v1));=”” “`=”” estoy=”” recibiendo=”” cero,=”” cualquier=”” tipo=”” de=”” ayuda=”” sería=”” apreciada.=””></v.length; j++){
if(i==0){
cache[0][j] = 0;
}
if(j==0){
cache[i][0] = 0;
}
else{
if(i == v[j]){
cache[i][j] = v[j];
}
if((i-cache[i][j-1]) <= v[j]){
cache[i][j] = cache[i][j-1] + v[j];
}
if((i-cache[i][j-1]) != v[j]){
cache[i][j] = cache[i][j-1];
}
}
}
}
return cache[barrel-1][j-1]
}

console.log(findmaxdp(v1));
“`

estoy recibiendo cero, cualquier tipo de ayuda sería apreciada.

gracias.>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber algunos problemas con tu código que podrían estar causando que devuelva un resultado de cero. Aquí hay algunas cosas que debes considerar:

    1. Inicialización del array cache:

    Estás inicializando el array cache para que tenga una segunda dimensión de j<=V1.length. Sin embargo, recuerda que tienes que tener en cuenta una capacidad de barril de barrel que podría ser mayor que el número de cubos V1.length. Por lo tanto, es posible que desees cambiar la inicialización de la segunda dimensión de cache a j<=barrel.

    1. Valores iniciales de la caché para i==0:

    Actualmente estás estableciendo el valor inicial de la caché como cache[0][j] = 0 cuando i==0. Sin embargo, deberías establecerlo como cache[i][0]=0, ya que estás iterando a través de la segunda dimensión de cache.

    1. Declaraciones condicionales:

    Tus declaraciones condicionales tienen algunos problemas. Por ejemplo, esta declaración if((i-cache[i][j-1]) <= V[j]) debería ser if((i-V[j]) >= 0 && cache[i-V[j]][j-1] + V[j] > cache[i][j-1]), que verifica correctamente si usar el cubo actual para llenar hasta i pintas dará como resultado un mejor resultado que no usarlo.

    1. Declaración de retorno:

    Por último, tu declaración de retorno debería ser return cache[barrel][V1.length], ya que estás buscando llenar el barril hasta la capacidad barrel utilizando todos los cubos V1.length.

    ¡Espero que esto te ayude a depurar tu solución de programación dinámica!

Comments are closed.