请问C++用递归做0/1背包问题的时候,在得出最高价值方案的同时怎么才能保存方案所选取物件的名字或者编号

也就是说能做到在输出时把最高价值方案的所包括的物品都打印出来。新手思考了半天想不通
代码部分就是很基础的解决方案

int solution(int capacity, int p, vector<int> weight, vector<int> value)
{
    if(p == 0)
    {
        return 0;
    }else if(capacity < weight.at(p-1))
    {
        return solution(capacity, p-1, weight, value);
    }else
    {
        int totalVal1 = solution(capacity - weight.at(p-1), p-1, weight, value) + value.at(p-1);
        int totalVal2 = solution(capacity, p-1, weight, value);

        return max(totalVal1, totalVal2);
    }

}

https://blog.csdn.net/chanmufeng/article/details/82955730