我使用下面给出的函数递归检查是否存在一个子集(在向量中),该子集总和为给定数字。但是我想对它进行一次修改。我在我的main方法中使用下面的代码段打印true或false。如何将其合并到我的check函数中,以便我在main方法中所做的只是调用函数?
if (check(vec, n, sum) == true)
cout << "true" << endl;
else
cout << "false" << endl;
我检查子集是否存在的功能。
bool check(vector<int> vec, int sum, int n)
{
if (sum == 0)
return true;
if (n == 0 && sum != 0)
return false;
if (vec[n-1] > sum)
return check(vec, n-1, sum);
return check(vec, n-1, sum || check(vec, n-1, sum-vec[n-1]));
}
答案 0 :(得分:1)
只需打印check
的返回值,std::boolalpha
即可,如果其他内容是多余的话:
cout << std::boolalpha << check(vec, n, sum) << std::noboolalpha << endl;
或者如果您真的想要调用该函数:
bool check(vector<int> vec, int sum, int n)
{
if (sum == 0)
{
cout << "true" << endl;
return true;
}
if (n == 0 && sum != 0)
{
cout << "false" << endl;
return false;
}
if (vec[n-1] > sum)
return check(vec, n-1, sum);
return check(vec, n-1, sum || check(vec, n-1, sum-vec[n-1]));
}