给struct里的vector赋值 5C
/*
         x
      a  b  c

x无关
x有关        
 */

#include <iostream>
#include <vector>
using namespace std;
struct staff
{
    int happy;
    vector<staff> subs;
    staff(int h)
    {
        happy = h;
    }
};

struct info
{
    int laimaxhappy;
    int bulaimaxhappy;
    info(int lai, int bulai)
    {
        laimaxhappy = lai;
        bulaimaxhappy = bulai;
    }
};

info process(staff* s)
{
    int lai = s->happy;
    int bulai = 0;
    if(s->subs.size() == 0)
    {
        return info(s->happy, 0);
    }
    else
    {
        for(staff it : s->subs)
        {
            info subinfo = process(&it);
            lai += subinfo.bulaimaxhappy;
            bulai += max(subinfo.laimaxhappy, subinfo.bulaimaxhappy);           
        }
        return info(lai, bulai);
    }
}

int getMax(staff* boss)
{
    info treeInfo = process(boss);
    return max(treeInfo.laimaxhappy, treeInfo.bulaimaxhappy);
}

int main()
{
    staff s1(1);
    staff s2(2);
    staff s3(3);
    staff s4(4);
    staff s5(5);

    vector<staff> v;
    v.push_back(s1);
    v.push_back(s2);
    v.push_back(s3);
    v.push_back(s4);
    v.push_back(s5);

    vector<staff> v1sub;
    v1sub.push_back(s2);
    v1sub.push_back(s3);
    s1.subs = v1sub;

    vector<staff> v2sub;
    v2sub.push_back(s4);
    s2.subs = v2sub;///期望s2.subs这个vector里有一个s4,可是debug发现没有

    vector<staff> v3sub;
    v3sub.push_back(s5);
    s3.subs = v3sub;///期望s3.subs这个vector里有一个s5,可是debug发现没有

    cout << getMax(&s1) << endl;


}

c++

2个回答

添加下面代码打印;
    cout << "****Print s2.subs start****" << endl;
    for(int i=0;i<s2.subs.size();i++)
    {
        cout << s2.subs.at(i).happy << endl;
    }
    cout << "****Print s2.subs end****" << endl;

    s3.subs 同理
qtchen_1988
qtchen_1988 回复yuAriellexi: 可是你题目没描述清楚,任谁也是会认为注释的那两行中文是你问的问题。找到了就好
11 个月之前 回复
yuAriellexi
yuAriellexi 我已经找到了错误了
11 个月之前 回复
yuAriellexi
yuAriellexi 我想问的不是这个,就是从int main里面可以看到s2->subs()这个vector的变量,就是在递归到process(s2)的时候,发现会进入s2->subs.size()==0
11 个月之前 回复
dabocaiqq
穷在人世中少你左右我想我连什么价值也没有 大神太强了
11 个月之前 回复

先不说你程序设计的怎么样,你后面的s2.subs和s3.subs里面都有s4和s5你却说没有,我觉得你应该是debug里面不会看变量
图片说明

yuAriellexi
yuAriellexi 是有,但是运行到 s2->subs.size()也就是找s2里面的subs这个变量的时候,会进入if s2->subs.size()==0这个循环,这不是我期望的
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问