1

我正在尝试在 C++ 中最大化此功能:

在此处输入图像描述

我把它放在函数中:

int F(int n , int T ){

  if( T >= 0  &&  n == 0){

      return 0;

  }else if( T < 0){

      return INT_MIN;

  } else if(T >= 0  &&  n > 0){

      for(int i = 0 ; i <= m[n-1] ; i++){

       ganancia = max(i * v[n-1] + F(n-1,T-i*t[n-1]),ganancia );

      }

  }

}

但是当我穿上 n 3 , T 8, t {1, 2, 2}, v {12, 15, 30} 并最后穿上 m{3, 3, 2} 我的程序返回 2 时,它必须返回 99 .

4

2 回答 2

1

函数中有三个分支,但只有两个返回值。如果您未能返回一个值,您将有未定义的行为。您需要从所有分支返回一个值。

于 2016-03-27T11:09:51.053 回答
0

现在我有这样的代码:

int F(int n , int T ){

  if( T >= 0  &&  n == 0){

      return 0;

  }else if( T < 0){

      return INT_MIN;

  } else if(T >= 0  &&  n > 0){

      for(int i = 0 ; i <= m[n-1]-1 ; i++){

       return (max(i * v[n-1] + F(n-1,T-i*t[n-1]),(i+1) * v[n-1] + F(n-1,T- (i+1)*t[n-1]) ));

      }

  }

}

现在它显示我的程序 12 而不是 13,至少我留下了 2 的值。谢谢!

于 2016-03-27T11:35:15.867 回答