草庐IT

Algorithm

全部标签

c++ - 如何在此添加此条件并使其达到最佳状态?

问题链接是:http://codeforces.com/problemset/problem/431/CQuiterecentlyacreativestudentLeshahadalectureontrees.AfterthelectureLeshawasinspiredandcameupwiththetreeofhisownwhichhecalledak-tree.Ak-treeisaninfiniterootedtreewhere:eachvertexhasexactlykchildren;eachedgehassomeweight;ifwelookattheedgesthatgo

c++ - 算法(C++/图论)

几天来我一直在努力解决一个算法问题,我尝试了很多方法来解决它,但它们不够准确/不够快,所以我指望你-我正在寻找获取提示或任何有用的信息。所以问题如下,有一个正方形的二维bool数组boolarray[n][n](n如您所料,它充满了1和0,但1总是分组在矩形中,就像这样:11100111000000111100该算法可以将两个零变为一个并形成尽可能大的形状(形成的形状不必是矩形)并返回形成该形状的数量。不计算对角线连接。例如:101010101应该返回7。问题是,这个算法应该尽可能快地工作,假设1000x1000数组的上边界需要1-2秒。所以我尝试了什么:首先,我将ones的正方形分组

c++ - 我的交集检查算法有什么问题?

我知道有很多网站都介绍了如何检查两条线的交点,但我发现为这样一个简单的数学任务复制和粘贴代码非常无聊。我越让我沮丧的是我无法让我的代码工作。我知道“我的代码有什么问题?”的问题。很愚蠢,但我不知道我的数学/代码到底出了什么问题,我的代码也有很好的文档记录(除了公认的错误变量命名),所以我想应该有人对它背后的数学感兴趣:boolsegment::checkforIntersection(QPointFa,QPointFb){//line1:a+bx,line2:c+dx,notethataandcarecalledoffsetandbxanddxarecalledgradientsint

c++ - 获取背包 DP 矩阵中的选定项目列表

我已经尝试实现堆栈溢出AnsweredSolution.但它不起作用。测试用例:intval[]={10,40,30,50};intwt[]={5,4,6,3};W=10;输出背包DP矩阵:000000000000000055555500004555599000045666910000345678910Wtthatcanbereachedis:10sumofwtofselecteditems:11(whichiswrongshouldbeonly10)selected->6(3rditem)and5(1stitem)[whichiswrong]intknapSack(intW,intw

c++ - 最小和最大的多维背包

我有一个类似于背包问题的问题,更具体地说是multidimensionalvariation。我有一堆对象,它们都有一个成本,一个值和一个类别。我需要在最大成本下优化背包的值(value),但每个类别中都有特定数量的对象。我已经在C++中成功实现了原始的背包算法,而无需关注类别。当我尝试添加类别时,我发现可以将其简单地视为多维背包问题,每个类别在新维度中的权重为0或1。我的主要问题是,我不仅有一个最大值,例如:5个食物类型的对象,而且还有一个最小值,因为我需要和5个食物类型的对象。而且我不知道如何在算法中添加最小值。显然,我可以使用一种一般情况,其中每个维度都有最大值和最小值,并针对总

C#,人工智能,机器人,路径规划,A*(AStar Algorithm)算法、源代码及计算数据可视化

PeterHart NilsNilsson BertramRaphael 参考:C#,人工智能(AI)机器人路径规划(PathPlanning)的ARA*(AnytimeReplanningA*Algorithm)算法与源程序https://blog.csdn.net/beijinghorn/article/details/125464754一、A*算法概述A*算法最初由斯坦福研究院(StanfordInstitute)的 PeterHart,NilsNilsson,BertramRaphael 发表于1968年,属于Dijkstra算法的拓展之一。论文原文https://www.cs.auc

c++ - 使用加法、减法和连接将数字组合成给定数字的方法

我已经通过暴力检查所有组合以我自己的方式解决了这个c++练习。我想知道是否有更好、更优雅和/或更短/更快的解决方案?这是翻译的问题:(“无”指的是串联)/*Writeaprogramthatoutputsthenumberofpossiblewaysto:Combineascendingdigits1...9using+,-,and"nothing"togettheresultofinputx.Example:Input:100Output:11(That'sbecausewehave11waystoget100:)123-45-67+89=100123+4-5+67-89=10012

c++ - C++ 中的数据范围过滤器

我想让用户能够定义过滤数据的范围。定义的范围可以是连续的、重叠的或分开的(例如,用户输入以下范围:1-10、5-10、10-12、7-13和15-20)。然后我想过滤数据,以便用户只显示那些范围内的内容。我可能会在不同的层上创建代码,在适当的地方组合这些范围(因此上面的示例将变为1-13和15-20,但我不希望我的数据服务与此有关,所以它必须能够处理上面的例子)我有很多数据,速度是重中之重,所以我不想遍历每个数据项的范围列表来检查它是否应该显示给用户。是否有可用于实现此目的的数据结构(或某种算法)? 最佳答案 您可以使用boost的

c++ - 如何优化我的截屏实用程序?

我正在用C++开发截屏实用程序。它基本上捕获桌面帧并创建一个AVI文件。算法如下:创建线程:this->m_hThread=CreateThread(NULL,0,thScreenCapture,this,0,NULL);每秒在thScreenCapture中捕获桌面n次(例如5fps)。obj->Capture();在Capture()中,将位图数据附加到avi文件。this->appendBitmapToAvi(this->avifile,bmp);此实用程序还可以录制声音。因此,在thScreenCapture方法中,声音数据也被附加到avi文件中。问题是当每秒捕获超过6帧(这可

c++ - Blit 队列优化算法

我正在寻求实现一个管理blit队列的模块。有一个表面,该表面的部分(由矩形包围)被复制到表面内的其他地方:add_blt(rectsrc,pointdst);可以有任意数量的操作按顺序发布到队列中。最终,队列的用户将停止发送blits,并要求一组最佳操作以在表面上实际执行。该模块的任务是确保没有像素被不必要地复制。当然,由于重叠,这变得棘手。blit可以重新blit先前复制的像素。理想情况下,blit操作将在优化阶段进行segmentation,这样每个block都可以通过单个操作到达其最终位置。把它们放在一起很棘手,但并非不可能。我只是不想重新发明轮子。我在网上四处查看,唯一找到的是