static int knapsackV(int[] p,int[] v,int maxV){
        if (maxV <= 0 || p == null || v == null || p.length != v.length){
            return 0;
        }
        int size = p.length;
        if (size == 1){
            if (v[0] <= maxV){
                return p[0];
            } else {
                return 0;
            }
        }
        //不能把原数组传进去，以免在执行第一个递归时改变了数组的值，
        //然后再去执行第二个递归时参数非预期的改变
        int[] tempArryP = new int[size - 1];
        int[] tempArryV = new int[size - 1];
        System.arraycopy(p, 0, tempArryP, 0, size - 1);
        System.arraycopy(v, 0, tempArryV, 0, size - 1);
        int tempP = p[size - 1];
        int tempV = v[size - 1];
        
        if (tempV > maxV)return knapsackV(tempArryP,tempArryV,maxV);
        
        int preMaxP = knapsackV(tempArryP,tempArryV,maxV);
        int currMaxP = knapsackV(tempArryP,tempArryV,maxV - tempV) + tempP;
        if (preMaxP >= currMaxP) {
            return preMaxP;
        } else {
            return currMaxP;
        }
    }