标题:新手求教 为什么全局变量从函数中出来值没有变
只看楼主
qq826647235
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2016-5-4
结帖率:63.64%
已结贴  问题点数:5 回复次数:2 
新手求教 为什么全局变量从函数中出来值没有变
新手求教 为什么全局变量从函数中出来值没有变

程序如下
#include<iostream>

using namespace std;

int c,n;
int Max;
int w[15],p[15];
void dfs(int position,int Now_weight,int Now_value)
{
    if(position<n)
    {
        dfs(position+1,Now_weight,Now_value);
        Now_weight+=w[position];
        if(Now_weight>c)
        {
            if(Now_value>Max)
                Max=Now_value;
        }
        else
        {
            Now_value+=p[position];
            dfs(position+1,Now_weight,Now_value);
        }
    }
    else
    {
        if(Now_value>Max)
        {
            Max=Now_value;
        }
    }
}

int main()
{

    int Max,a;
    while(1)
    {
        cin>>n>>c;
        if(n==0&&c==0) break;
        Max=0;
        for(a=0;a<n;a++)
        {
            cin>>w[a];
        }
        for(a=0;a<n;a++)
        {
            cin>>p[a];
        }
        dfs(0,0,0);
        cout<<Max<<endl;
    }
    return 0;
}

0 1背包问题用递归做的。
调试完发现在函数中Max确实变为1了。结果输出Max还是0,为什么。。。
搜索更多相关主题的帖子: include position 
2016-09-21 22:53
仰望星空的
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:50
专家分:248
注 册:2015-9-28
得分:0 
main函数里面的Max是局部变量,你之前定义的Max是全局变量,调用时候变成1了,可能是显示的是局部变量那个变成1了,建议你可以换个全局变量试试~
2016-09-22 09:09
仰望星空的
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:50
专家分:248
注 册:2015-9-28
得分:5 
main函数里面的Max是局部变量,你之前定义的Max是全局变量,调用时候变成1了,可能是显示的是局部变量那个变成1了,建议你可以换个 变量表示一下
2016-09-22 09:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469044-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064014 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved