gpt4 book ai didi

c++ - 修改递归子集求和算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:25:36 25 4
gpt4 key购买 nike

我正在使用下面给出的函数递归地检查是否存在总和为给定数字的子集(在 vector 中)。但是我想对其进行修改。我在我的 main 方法中使用下面的代码片段打印 true 或 false。我如何将它合并到我的检查函数中,以便我在 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]));
}

最佳答案

只需打印 check 的返回值,使用 std::boolalpha 你的 if else 是多余的:

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]));
}

关于c++ - 修改递归子集求和算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26317816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com