草庐IT

Algorithm

全部标签

C++ 字符串数组二分查找

stringHaystack[]={"Alabama","Alaska","AmericanSamoa","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","DistrictofColumbia","Florida","Georgia","Guam","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","M

c++ - BST前序遍历并将树内容写入临时数组

我正在尝试将二叉搜索树的内容写入临时数组以便在main中使用。但是我不确定该怎么做......我试过这样的事情:voidBook::preorder(TreeNode*ptr,Person&temp[],intx){if(ptr!=NULL){temp[x].name=ptr->item.name;x++;preorder(ptr->left,temp,x);preorder(ptr->right,temp,x);}}而且,它给出了以下错误:declarationof'temp'aasarrayofreferencesnomatchfor'operator[]'in'((Book*)t

c++ - 我不明白这个霍夫曼算法的实现

templatevoidhuffman(MinHeap*>heap,intn){for(inti=0;i*first=heap.pop();TreeNode*second=heap.pop();TreeNode*bt=newBinaryTreeNode(first,second,first.data,second.data);heap.push(bt);}}在我的FundamentalsofDataStructuresinC++教科书,它给出了霍夫曼编码的2页定义,以及上面的代码。对我来说,这本书不够详细,所以我进行了谷歌搜索,了解了霍夫曼编码的过程是如何工作的。教科书声称在上面代码的

c++ - 从特定顶点执行深度优先算法

我正在尝试通过使用boost图形库找到一种从特定顶点执行深度优先算法的方法。Boost库提供的深度优先算法计算从起始顶点到最后一个顶点的图。但是,如果必须从特定顶点搜索图形怎么办?有什么建议吗? 最佳答案 看看BGL'sdocumentation.有一个重载,您可以在其中提供起始顶点。templatevoiddepth_first_search(constGraph&g,DFSVisitorvis,ColorMapcolor,typenamegraph_traits::vertex_descriptorstart)

c++ - 将递归置换生成器转换为迭代

我在将这个用于显示给定整数集的所有排列的递归算法转换为迭代算法时遇到了一些困难。voidgetPermutationsR(intv[],intn,inti){if(i==n){//Displaycontentsofv}else{for(intj=i;j这是我目前的尝试,它是完全错误的,但如果不对问题使用native迭代算法,我看不出有任何方法可以更正它。我的一半尝试让我“弹出”多于“推送”(当我尝试访问空堆栈中的元素时导致错误),而另一半我“推送”多于“弹出”(无限循环)。voidgetPermutationsI(intv[],intn,inti){stackiStack;stackj

c++ - 指针和数据之间的 union ,可能存在的陷阱?

我正在编写一个系统,该系统具有大量冗余数据,需要将这些数据保存在内存中,并以尽可能短的延迟进行访问。(未压缩,数据保证至少占用1GB内存)。我想到的一种方法是创建如下所示的容器类:classChunk{public:Chunk(){...};~Chunk(){/*carefullydeleteelementsaccordingtomask*/};getElement(intindex);setElement(intindex);private:unsignedcharmask;//onbit==dataisnot-redundant,arrayis8x8,64elementsunion

c++ - priority_queue、迭代器和排序

考虑一个std::priority_queue,其中N元素具有相同的优先级。现在考虑具有任意优先级的元素的一些pop()和push(),因此生成的队列由所有这些N元素组成上面提到的加上M个新元素,其中所有的N+M元素都具有相同的优先级。下面的pop()是否保证顶部元素的移除遵循FIFO顺序,即首先移除第一个插入的元素?另一个问题是如何找到一个元素并将其从优先队列中移除?(一个简短的例子表示赞赏) 最佳答案 我不认为有任何这样的保证。根据sgi'sdocs,它取决于底层数据结构。我认为大多数常见的实现都使用堆。推送和弹出堆上的任何项目

c++ - 寻找 8x8(或 nxn)离散余弦变换 (DCT)/IDCT 伪代码

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我已经在Google上搜索了一段时间,以找到相当高效的8x8(或nxn)DCT算法的伪代码,但我找不到任何东西!我实现了天真的方法,但执行时间太长。如果您可以发布一些伪代码或引用一本好书/文档/网站,那将会很有帮助。C或C++示例会更好!

c++ - 无符号长整型

我提交了一个用C语言编写的矩阵求幂代码,用于查找第n个斐波那契数,我使用longlongint变量存储第n个斐波那契数模10000007的答案,法官给出了“超出时间限制”,但是当我使用“unsignedlonglongint”我的代码在规定时间内被接受,执行时间减少了。我无法理解为什么longlongint给出“超过时间限制”而接受“unsignedlonglongint”?(极端测试用例的答案在两种情况下都是正确的) 最佳答案 为了不重复任何人的努力,请参阅thisquestion还有这个moreadvancedquestiona

c++ - 如何计算n个整数的lcm的所有质因数?

我有n个整数存储在数组a中,比如a[0],a[1],.....,a[n-1],其中每个a[i]和n.现在,我需要找到这n个整数的LCM的所有素因子,即{a[0],a[1],.....,a[n-1]}的LCM我有一个方法,但我需要一个更有效的方法。我的方法:Firstcalculatealltheprimenumbersupto10^6usingsieveofEratosthenes.Foreacha[i]boolcheck_if_prime=1;Forallprime有没有更好的方法来解决这个问题?我发布问题的链接:http://www.spoj.pl/problems/MAIN12B