草庐IT

algorithm

全部标签

c++ - 算法和数据结构

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion我目前的第一门算法和数据结构类(class)已经进行了一半。不幸的是,我的老师不是很好,我们使用的在线书籍的描述非常模糊(http://people.cs.vt.edu/~shaffer/Book/)到目前为止,我设法保持了A,主要是由于运气和常识,但它开始变得现在我们正在处理排序、搜索和更高级的数据结构(如图形),这要困难得多。我想知道是否有您推荐的任何在线资源可以

c++ - 生成不同于数组的 1000 个元素的新元素

我在一次采访中被问到这个问题。考虑穿孔卡片的场景,其中每张穿孔卡片都有64位模式。我被建议将每张卡片作为int,因为每个int都是位的集合。此外,考虑到我有一个数组,其中已经包含1000张这样的卡片。我每次都必须生成一个新元素,这与之前的1000张卡片不同。数组中的整数(又名卡片)不一定排序。更重要的是,这怎么可能是C++的问题,64位int从哪里来,我如何从要生成的元素所在的数组中生成这张新卡片不同于数组中已经存在的所有元素? 最佳答案 有264个64位整数,一个数太多了大于1000,最简单的解决方案是只生成一个随机64位数字,然

c++ - 给定一个字符串数组,返回所有是变位词的字符串组

给定一个字符串数组,返回所有是变位词的字符串组。我的解决方案:对数组中的每一个字符串单词,排序O(mlgm),m是一个单词的平均长度。建立哈希表。将排序后的词作为key放入哈希表中,同时生成词的所有排列(O(m!)),在字典(前缀树映射)中搜索每个排列,时间复杂度为O(m),如果是在字典中,将(O(1))放入哈希表中,使得所有排列的单词都放入具有相同键的列表中。总的来说,O(n*m*lgm*m!)时间和O(n*m!)空间,n是给定数组的大小。如果m很大,效率不高,m!.有更好的解决方案吗?谢谢 最佳答案 我们定义了一个字母表,其中包

c++ - 转换和积累

有没有人写过一个符合C++STL的算法,将std::transform和std::accumulate组合成一个支持一元、二进制和也许甚至(n-ary!)变体,比如std::transformed_accumulate?我想要这个是因为我发现这个模式在线性代数中高度可重用,例如(l1-)norm计算。l1范数计算元素绝对值之和。 最佳答案 嗯...我敢打赌,您可以通过将转换嵌入二元谓词、转换元素并在转换后进行累加来做到这一点。structtimes2accumulator{intoperator()(intoldvalue,intn

c++ - 如何将字符串转换为缩写形式?

我想将字符串调整到特定宽度。例如,“Helloworld”->“...world”、“Hello...”、“He...rld”。你知道我在哪里可以找到它的代码吗?这是一个巧妙的技巧,对于表示信息非常有用,我想将它添加到我的应用程序中(当然)。编辑:抱歉,我忘了提到字体部分。不仅适用于固定宽度的字符串,还适用于字体。 最佳答案 如果你在任何地方都找不到它,这是一个非常简单的算法,你可以自己编写-伪代码类似于:iftheString.Length>desiredWidth:theString=theString.Left(desired

c++ - 大 if else 语句

如果有一个大的(大约100多个)ifelse语句,如下所示,并且ifelse条件可能是不规则的(例如,一些依赖于3个变量,一些依赖于4个),有没有办法让它变得更简单?基本上我有一个大约100多行的表,其中a、b、c和d作为列。基于a、b、c和d,我需要执行3种不同类型的功能。该表描述了一组业务规则。uint8a;uint8b;uint16c;uint8d;if(a==1&&b==1&&c==0){functionA();}elseif(a==5&&b==5&&c==2&&d==2){functionB();}elseif(a==1&&(b==36||b==7)&&c==0){funct

c++ - 用于字符串匹配算法的大 O 表示法

函数foo的大O表示法是什么?intfoo(char*s1,char*s2){intc=0,s,p,found;for(s=0;s1[s]!='\0';s++){for(p=0,found=0;s2[p]!='\0';p++){if(s2[p]==s1[s]){found=1;break;}}if(!found)c++;}returnc;}函数foo的效率如何?a)O(n!)b)O(n^2)c)O(nlg(base2)n)d)O(n)我会说O(MN)...? 最佳答案 它是O(n²)其中n=max(length(s1),length

c++ - 3D几何引擎

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭3年前。Improvethisquestion我是使用c++(或c++0x)处理3D数据的新手,我正在尝试编写简单的应用程序,它允许处理此类数据(模型、segmentation等)。我正在寻找类似“3d几何引擎”之类的东西-可以在内存中有效处理3d几何并提供API来修改其组件(顶点、点、多边形(不仅是三角形)、顶点属性等)的引擎。我正在寻找类似的东西,但没有运气。如果有任何免费提供的引擎,您能否推荐任

c++ - 乐高塑料积木的组合数 C++

您有一些乐高塑料积木,所有积木都是1x1x1。您还有一block瓷砖,1xN(N这是一个例子:如果图block是1x7,则有17种不同的组合。输入:7输出:17(来源:mendo.mk)此外,如果您没有积木,则计为1种组合。我已经研究过这个问题,并且找到了计算图block的最大长度是否为14(3个序列)的可能组合的方法。我发现它使用for循环。我最大的问题是我需要运行大量的for循环。例如,对于1个序列,我使用1个for循环,对于2个序列,2个循环+1个用于1个序列...所以如果我使用所有80个积木,我可以创建20个序列,我将不得不使用超过210个for循环,这是数量巨大。所以如果我能

c++ - 推送和弹出操作的混合序列为什么这个序列不可能

我正在复习期末考试,但我无法解决这个问题:Supposethataclientperformsanintermixedsequenceofstackpushandpopoperations.Thepushoperationspushtheintegers0through9inorderontothestack;thepopoperationsprintoutthereturnvalue.Whichofthefollowingsequencescouldnotoccur?(a)4321098765(b)2143658790(c)0465381729(d)4687532910(e)Allo