``public class Mochila {
    private static final int  pesoMaximo;
    private static final int items[][] = {{2,3},{3,4},{4,5},{5,6}};
    static{
     pesoMaximo=5;
    }
private static int mochilaDinamica(int p[][], int capacidad){
    int n=p.length;
    int i;
    int w;
    int beneficio[][]=new int[n+1][capacidad+1];
    for (i=0;i<=capacidad;i++){
        beneficio[0][i]= 0;
    }
    for(w=1;w<=n;w++){
        beneficio[w][0]=0;
    }
    for(i=1;i<=n;i++){
        for(w=1;w<=capacidad;w++){
            if(w<p[i-1][i-1]){
                beneficio[i][w]=beneficio[i-1][w];
            }
            else{
                if(beneficio[i-1][w]>=beneficio[i-1][w-p[i-1][i-1]]+p[i-1][w]){
                    beneficio[i][w]=beneficio[i-1][w];
                }
                else{
                    beneficio[i][w]=beneficio[i-1][w-p[i-1][i-1]]+p[i-1][w];
                }
            }
            }
        }return beneficio[n][capacidad];
    }
    public static void main(String[] args){
        System.out.println("version dinamica:"+ mochilaDinamica(items, pesoMaximo));
    }
}al ejecutar este codigo me lanza este error :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at mochila.Mochila.mochilaDinamica(Mochila.java:38)
at mochila.Mochila.main(Mochila.java:56)
nose que es si me pueden ayudar seria de gran ayuda gracias



