草庐IT

RECURSION

全部标签

c++ - 在网格中找到最佳路径的最大长度

给定一个N*N的网格,现在我们需要找到一条最大长度的好路径,好路径定义如下:好的路径总是从标记为0的单元格开始我们只能向左、向右、向上或向下移动如果第i个单元格的值为A,则路径中下一个单元格的值必须为A+1。现在给定这几个条件,我需要找出可以走的最大路径的长度。我还需要计算最大长度的路径。例子:设N=3,我们有3*3矩阵如下:032301210那么这里的最大好路径长度是3,这样好路径的数量是4。032301210032301210032301210032301210 最佳答案 此问题是LongestPathProblem的变体,但是

C++-如何增加堆栈大小以允许 Kosaraju 算法进行更多递归以计算强连通分量

我使用的是mac、4GBRAM和CLionIDE。编译器是Clang。我需要在这个深度优先搜索的递归实现中允许更多的递归(目前在具有80k节点的图上失败)。typedefunordered_map>graph;voidDFS(graph&G,inti,vector&visited){visited[i]=true;for(intj=0;i这是为了实现Kosaraju算法以计算图中的强连通分量。https://en.wikipedia.org/wiki/Kosaraju%27s_algorithm我知道可以将DFS实现为迭代,但最后一步很重要,我找不到使用迭代来包含它的方法。这是因为该步

c++ - 避免并行递归异步算法中的递归模板实例化溢出

这个问题通过一个简化的例子更容易解释(因为我的真实情况远非“最小”):给定...templatevoidpost_in_thread_pool(T&&f)...函数模板,我想创建一个具有树状递归结构的并行异步算法。我将使用std::count_if编写以下结构的示例作为占位符。我将要使用的策略如下:如果我检查的范围长度小于64,我将回到顺序std::count_if功能。(0)如果它大于或等于64,我将在线程池中生成一个作业,该作业在范围的左半部分递归,并在当前线程上计算范围的右半部分。(1)我将使用原子共享int“等待”计算两半。(2)我将使用原子共享int累积部分结果。(3)简化代

c++ - 递归算法时间复杂度 : Coin Change

我正在研究一些算法,遇到了coinchange问题。在思考这个问题时,我想到了这个朴素的递归解决方案:intcoinChange(constvector&coins,intstart,intn){if(n==0)return1;if(n然后我意识到“接受”的解决方案如下:intcount(intS[],intm,intn){//Ifnis0thenthereis1solution(donotincludeanycoin)if(n==0)return1;//Ifnislessthan0thennosolutionexistsif(n=1)return0;//countissumofsol

c++ - 递归模板不能像预期的那样使用静态变量

代码#includeusingnamespacestd;templatestructFibo{staticintx;};templateintFibo::x=1;templateintFibo::x=1;templateintFibo::x=Fibo::x+Fibo::x;//markedlineintmain(){cout::x::x::x::x::x::x输出001211在VC++中。(根据用户MM.它在gcc中按预期编译)。当编译器到达带有n=5的标记行时它不会为n=4再次编译同一行,但只是对待Fibo::x就好像它是用声明的一样templateintFibo::x;//xdef

python - C++ 中的递归生成器

我有一个大小为N的vector,其中每个元素i的值可以从0到possible_values[i]-1。我想做一个函数来遍历所有这些值。我能够使用递归生成器在Python中做到这一点:defall_values(size,values,pos=0):ifpos==size:yield[]else:forvinxrange(values[pos]):forv2inall_values(size,values,pos+1):v2.insert(0,v)yieldv2possible_values=[3,2,2]forvinall_values(3,possible_values):print

C++函数式编程代码片段

我一直在从事一个名为:C++11/14的函数式编程特性(针对我在大学的一个科目)的项目。关于这些主题有几个现有的资源和类似的介绍,我找到了一个不久前,其中包含几个我还没有完全理解的代码片段(并且它们可以以某种方式连接到函数式编程)。片段A和B属于递归,C属于惰性求值。我想在下面与您分享:片段A:#includetemplatestructFactorial{staticintconstval=N*Factorial::val;};templatestructFactorial{staticintconstval=1;};intmain(){intfactorial_of_6=Facto

c++ - 启用 c++11 时 c++ 递归模板的奇怪行为

我试图理解我收到的一些递归C++模板代码,但遇到了一些奇怪的行为。出于某种原因,编译器似乎能够在编译时添加两个值,但必须在运行时进行左移。即便如此,只有当我尝试在启用c++11的情况下进行构建时才会出现问题。代码(我已经归结,你稍后会看到)定义了两对模板——一对名为shft和shft_aux和一对名为add和add_aux递归生成它们自己。顺便说一句,add模板不应该有用,它的唯一目的是演示问题,而不是生成实际的min值。如果我在没有命令行参数的情况下编译这段代码,它编译得很好。但是,如果我指定-std=c++11-stdlib=libc++,add_aux上的static_asser

C++ 分支递归结构?

我有以下内容。该结构已原型(prototype)化,因此可以正常编译。structvertexNodeInfo{vectornode;};我正在尝试写一个八叉树的东西。我想要做的是使用递归函数继续向每个节点添加一个节点,直到我到达特定点,此时该函数而不是添加另一个节点,而是添加一个叶子。如果可能的话,当没有进一步添加节点或叶子时,我想不使用内存。也许模板在这种情况下会有所帮助,但我不确定如何使用它们...我认为我没有很好地解释自己。这是一个图表:我不知道我的要求是不可能实现的,还是太令人困惑而无法理解,或者只是愚蠢,但我自己无法弄清楚。很抱歉,我无法更好地解释它。我使用的是C++98/

c++ - 在 C++ 中抓取递归 ntfs 目录的最快方法

我写了一个小型爬虫来扫描和求助目录结构。它基于dirent(它是FindNextFileA的一个小包装)在我的第一个基准测试中,它出奇地慢:4500个文件大约需要123473毫秒(thinkpadt60p本地三星320GB2.5"HD)。在123473毫秒内找到121481个文件这个速度正常吗?这是我的代码:inttestPrintDir(std::stringstrDir,std::stringstrPattern="*",boolrecurse=true){structdirent*ent;DIR*dir;dir=opendir(strDir.c_str());intretVal=