背包问题,用的是回溯法,最后一个解出现错误

每次maxv的值都会更新为4个叶子节点的各个价值v,最后运行的结果是0,请问这个要怎么改

img

img

img


#include <iostream>
#define MAXN 20
using namespace std;
int n,V;        //n个物品,箱子容量为V
int  vol[40],v[40];        /7ol代表体积,v代表物品价值 
int maxv=0;                //存放最优解的总价值 
int x[MAXN];            //存放最优解 
void DFS(int i,int tvol,int tv,int op[])
{
    if(i>n)            //用的是排列树的解法,找到了一个叶子节点 
    {
        cout<<maxv<<"jhcdsc"<<endl;
        if(tv>=maxv&&tvol<=V)
        {
            cout<<tv<<"   "<<maxv<<endl;
            maxv=tv;
            for(int j=1;j<=n;j++)
                x[j]=op[j];    
        }    
    } 
    else            //尚未找完所有的物品 
    {
        op[i]=1;    //尝试把第i个物品放进箱子里面
        maxv+=v[i];
        DFS(i+1,tvol+vol[i],tv+v[i],op);
        op[i]=0;        //不把第i个物品放进箱子
        maxv-=v[i];
        DFS(i+1,tvol,tv,op); 
         
    }
} 
dispasolution()
{
    cout<<maxv<<endl;
}
int main()
{
    int op[MAXN];            //存放临时解 
        cin>>V>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>vol[i]>>v[i];
        }
    DFS(1,0,0,op);        //开始时体积和价值都是0 
    dispasolution(); 
}


```c++
        cout<<maxv<<"jhcdsc"<<endl;

这个“jhcdsc”是用来干嘛的?

应该是这里出错了
```