gpt4 book ai didi

c++ - 在 C++ 中实现 Heap 的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:37:57 26 4
gpt4 key购买 nike

我正在尝试实现 Heap's algorithm在 C++ 中。我觉得我已经完全按照算法的工作方式编写了代码,但它给出了错误的结果。

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void print(vector<int> v)

{
for(auto x:v)
cout<<x;
cout<<endl;
}

void gen(vector<int> v,int n)

{
if(v.size()==1)
cout<<v[0];
print(v);
int i = 0;
while(i<n)
{
gen(v,n-1);
if(n%2)
swap(v[n-1],v[0]);
else
swap(v[n-1],v[i]);
i++;
}

}


int main()
{
vector<int> v ={1,2,3};
gen(v,v.size());
}

我一直在尝试完成这项工作。对于上面代码中的 vector ,它给出了荒谬的结果:

123123123123213213321321321231231123123123213213

最佳答案

Wiki 页面显示了您的代码中缺少的 if-else。您所拥有的 if 会做一些完全不同的事情。

此外,我会在 cout 之后添加 std::endl,并尝试输入 1 2 3 4。链接的文章有一个针对 4 个元素运行的算法的逐行示例。

关于c++ - 在 C++ 中实现 Heap 的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033127/

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