草庐IT

algorithm

全部标签

c++ - 是否可以在 C++ 中转到更高级别的范围条件?

我在dosomething部分中有完全相同的代码行,所以我想将这两个部分合并为一个部分。但是我不想为dosomething创建一个单独的函数。有没有办法在到达条件B的else时转到conditionA的else?if(conditionA){//somecodehereif(conditionB){}else{//dosomething}}else{//dosomething} 最佳答案 绝对不鼓励跳过代码,如果你真的想最小化代码那么你唯一能做的就是重新安排流程以更好地满足你的需要,例如:if(conditionA){somecod

c++ - 具有 O(1) 出队和 O(whatever) 入队的优先级队列

我正在用C++编写一个应用程序,其中对优先级队列进行O(1)出队操作至关重要,而入队的复杂性并不那么重要(除非它变成n^2或2^n当然)。一开始我用的是链表。它非常适合出队(O(1)),并且具有良好的入队复杂度。唯一的问题是,对其进行排序。并不是说使用具有O(n)复杂度的插入排序就可以满足我的需要。但是对链表进行排序是一件痛苦的事情。太慢了。vector一点也不好。出队将是O(n)以将所有元素移回一个位置。入队仍然是O(n),但速度要快得多。你能推荐更高效的方法吗?谢谢。 最佳答案 反向排序的vector有O(1)pop_back和

c++ - 数独求解算法C++

这几天我一直在尝试制作一个数独求解程序,但我坚持使用这些方法。我在这里找到了这个算法,但我不太明白:startatthefirstemptycell,andput1init.Checktheentireboard,andseeifthereareanyconflictsIftherearecoflictsontheboard,increasethenumberinthecurrentcellby1(sochange1to2,2to3,etc)Iftheboardiscleanmove,startatsteponeagain.Ifallninepossiblenumbersonagive

c++ - 您将如何根据元素的某些属性删除 std::vector 的元素?

例如,如果您有一个std::vector,其中MyClass有一个公共(public)方法:boolisTiredOfLife(),如何去掉返回true的元素? 最佳答案 我更喜欢remove_ifv.erase(remove_if(v.begin(),v.end(),mem_fun_ref(&MyClass::isTiredOfLife)),v.end());remove_if返回指向仍在序列中的最后一个元素之后的迭代器。erase删除从第一个参数到最后一个参数(两个迭代器)的所有内容。

c++ - C++的2D分段/四元树解释

Closed.Thisquestionneedsdetailsorclarity。它当前不接受答案。想要改善这个问题吗?添加详细信息,并通过editingthispost来解决问题。已关闭6年。ImprovethisquestionP.S.这可能不是重复的。我搜寻了SO,确保没有得到想要的东西。我是ACM问题解决者,最近我学习了线性阵列的分段树和具有延迟传播的分段树。但是我遇到了一些需要2D分段树(在某处称为四叉树)的问题。但是我找不到关于它的任何好的教程。我搜索了SO,并找到了http://e-maxx.ru/algo/segment_tree链接,该链接是俄语教程。我需要对2D分段

c++ - 降低 o(n^3) c++ 代码的复杂性

我想降低以下算法的复杂性。基本上,它以一个词作为输入并计算其中唯一字母的数量(该词的“熵”)。我当前的解决方案采用3个嵌入式for循环,复杂度为o(n^3)。由于这段代码是一个更大项目的一部分(我们为名为boggle的游戏构建了一个求解器),我希望降低算法的复杂性以减少其执行时间。提前致谢!intwordEntropy(stringword){intlength=word.length();intuniquewords=length;stringcompare=word;charsave[17];intcond=0;for(intii=0;ii0){break;}uniquewords

c++ - 更好的随机算法?

我正在用C++制作一个游戏,它涉及用随机bool值(是或否)填充方block,是否是由rand()%1决定。感觉不是很随意。我在启动时将srand与ctime一起使用,但似乎出现了相同的模式。是否有任何算法可以创建非常随机的数字?或者关于如何改进rand()的任何建议? 最佳答案 真正的随机性通常看起来并不是很随机。不要期望看到奇怪的运行。但至少您可以立即做的一件事是避免只使用最低位。在C中引用数字食谱:Ifyouwanttogeneratearandomintegerbetween1and10,youshouldalwaysdoi

c++ - 对于受 CPU 限制的应用程序,您会推荐哪种语言/平台?

我正在开发非交互式cpu绑定(bind)应用程序,它只进行计算,几乎没有IO。目前它工作时间太长,在我努力改进算法的同时,我也在考虑它是否可以为更改语言或平台带来任何好处。目前它是在使用英特尔C++编译器编译的Windows上的C++(没有OOP,所以它几乎是C)。切换到ASM有帮助吗?帮助有多大?切换到Linux和GCC会有帮助吗? 最佳答案 只是要彻底:要做的第一件事是收集配置文件数据,第二件事是考虑您的算法。我相信您知道这一点,但它们必须#included到任何性能编程讨论中。直接回答您的问题“切换到ASM有帮助吗?”答案是“

c++ - malloc 多个小时间或几个大时间更快?

当使用malloc分配内存时,对较小的数据block进行多次malloc还是对较大的数据block进行较少的malloc通常更快?例如,假设您正在处理一个包含黑色像素和白色像素的图像文件。您正在遍历像素并希望将每个黑色像素的x和y位置保存在一个新结构中,该结构还具有指向下一个和上一个像素x和y值的指针。使用指针为每个黑色像素的x和y值分配一个新结构来遍历像素通常会更快,还是通过遍历一次来计算黑色像素的数量,然后分配一个大的使用仅包含x和y值但不包含指针的结构的内存块,然后再次迭代,将x和y值保存到该数组中?我假设某些平台在哪个更快方面可能与其他平台不同,但每个人都认为什么通常会更快?

c++ - 最接近一组点的线

这个问题在这里已经有了答案:Howtofitthe2DscatterdatawithalinewithC++(7个答案)关闭9年前。给定一组点S(x,y)。找到与所有点的距离最小的线?即,最小化每个点与最佳直线之间的距离总和(绝对值或平方)。距离是指点和线之间的最短距离。也就是最常见的一种,欧氏空间中的欧氏距离。我尝试谷歌搜索但找不到任何相关结果,是否有任何线扫描算法可以完成这项任务?