草庐IT

algorithm

全部标签

java - 在 ImageView FloodFill 算法中获取触摸坐标不准确

我正在尝试使用FillFlood算法为应用制作立方体绘画工具。这是算法的代码:publicclassQueueLinearFloodFiller{protectedBitmapimage=null;protectedint[]tolerance=newint[]{0,0,0};protectedintwidth=0;protectedintheight=0;protectedint[]pixels=null;protectedintfillColor=0;protectedint[]startColor=newint[]{0,0,0};protectedboolean[]pixelsC

贪心算法(greedy algorithm,又称贪婪算法)详解(附例题)

目录一)概念二)找出全局最优解的要求三)求解时应考虑的问题四)基本步骤五)贪心策略选择六)实际应用1.零钱找回问题2.背包问题3.哈夫曼编码4.单源路径中的Djikstra算法5.最小生成树Prim算法一)概念贪心算法(GreedyAlogorithm)又叫登山算法,它的根本思想是逐步到达山顶,即逐步获得最优解,是解决最优化问题时的一种简单但是适用范围有限的策略。贪心算法没有固定的框架,算法设计的关键是贪婪策略的选择。贪心策略要无后向性,也就是说某状态以后的过程不会影响以前的状态,至于当前状态有关。贪心算法是对某些求解最优解问题的最简单、最迅速的技术。某些问题的最优解可以通过一系列的最优的选择

python 经典算法之--最短路径算法(Shortest Path Algorithm)

最短路径算法是一类算法,用于寻找图中两个节点之间的最短路径。最短路径算法可分为单源最短路径算法和多源最短路径算法。单源最短路径算法求解的是一个源点到其它所有节点的最短路径,多源最短路径算法求解的是任意两个节点之间的最短路径。在本次回答中,我们主要介绍单源最短路径算法中的两种经典算法:Dijkstra算法和Bellman-Ford算法。Dijkstra算法Dijkstra算法是一种贪心算法,用于解决带权重的有向图或无向图中的单源最短路径问题。Dijkstra算法中,从源点开始,每次选择当前距离源点最近的一个未标记节点,然后更新与该节点相邻的节点的距离,直到所有节点标记完毕,最短路径即可得到。下面

java - 对包含带数字的字符串的文件名数组进行排序

对于我的项目,我需要从FTP服务器下载一个zip文件,该服务器每年大约发布13次新的zip。我需要按照服务器的命名约定下载最新的文件:前缀+版本号(一位或两位)+年份(两位)+后缀+“.zip”例如:ALFP1016F.zip前缀将始终相同(ALFP),后缀为F或P(代表“完整”或“部分”;我只需要以后缀F结尾的文件)。最重要的是,我需要忽略目录中的其他几个文件,因为它们具有不同的前缀。然后,我需要按照此优先顺序获取数组中的最新文件:最近一年。当然,'99不应被视为最近的一年。最新版本号例如,如果我有这个文件名列表(fullserverdirectory):1stpage712.pdf

android - 这个 Google LVL 政策实现是否合理安全?

Google在其LicenseVerificationLibrary中提供的默认ServerManagedPolicy依靠服务器响应来确定许可证重新生效间隔。这导致永久性地每隔几天就需要重新验证一次。这不仅对用户造成滋扰,对于长时间没有连接的用户来说可能是一个严重的问题。(我们刚刚收到一位用户的询问,他预计几周没有互联网连接,这就是这个问题的动机。)总而言之,我正在寻找一种可以完成两件事的算法:与ServerManagedPolicy相比,大大降低了连接要求;提供相同级别的反盗版保护。在对thisquestion的回答中建议的策略算法是忽略Google服务器响应中提供的时间,而是使用大

c++ - C++中的开源随机数生成算法?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我需要连续生成1-10000范围内的随机数而不重复。有什么建议吗?描述:我们正在为我们的应用程序构建一个新版本,它在SqliteDB中维护记录。在我们应用程序的最新版本中,我们没有为每条记录设置唯一的键。但是现在有了新的升级版本,我们需要支持从上一个版本的数据库导入工具。所以我们要做的是,我们从旧数据库中读取每条记录并为唯一key生成一个随机数并将其存储在新数据库中。

c++ - 如何化简分数

我想在我的应用程序中简化一个分数。分数就像,x/y其中x和y是整数。我想将分数简化为最简单的形式。任何人都可以给我提示如何去做。提前致谢。 最佳答案 计算x和y的最大公约数将两者除以GCDEuclid'salgorithm是计算GCD的简单方法。 关于c++-如何化简分数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7777142/

c++ - 你会如何改进这个算法? (c 弦反转)

为了解决我在网上发现的一些编程面试挑战,我不得不编写一个算法来反转constchar*并返回指向新char*的指针。我想我有它,但为了让它正常工作,我不得不做一些奇怪的事情——基本上必须自己解释空终止字符。不知怎的,我觉得这是错误的,但我很困惑,我想知道是否有人可以帮助我:char*reverse(constchar*str){intlength=strlen(str);char*reversed_string=newchar[length+1];for(inti=0;i 最佳答案 std::reverse来自适用于字符串和char

c++ - 字符串的不同子串数

我正在解决DISTINCTSUBSTRING(给定一个字符串,我们需要找到它的不同子串的总数)。我正在使用后缀的trie来解决它。我正在通过测试用例,但在提交时得到了TLE。而且占用的空间也很大,4093M。注意:因为总共可以有256个字符,所以我设置的数组大小为257,ascii值作为索引。我现在的想法:for(inti=0;i因为substr()可能需要O(n)的时间,在最坏的情况下插入函数也需要(n)时间在最坏的情况下,O(n)for循环:O(n^3)。这让我TLE。error:couldnotconvert'temp'from'std::__cxx11::string*{aka

c++ - 如何权衡精度和速度以评估 C++ 中两个 vector 的点积符号? (不是硬件特定的)

假设我有两个浮点A和Bvector。我需要找到A和B的点积,即。sign(A.B)-如果它是正数或负数或0。vector的大小很小,小于100。但是,我需要非常快地执行此操作!你可以假设A中的所有元素都是[0,1]范围内的float,而B中的所有元素都是[-500,+500]。我一直在寻找精确的解决方案,但如果实际上没有给出很多错误的答案,近似的解决方案也会这样做(我知道,“很多”是主观的,但我不能在不谈论硬件或实现的情况下给出确切的数字)我探索了使用-O4运行最快的Pragma编译器指令。我在实现中探索了一些更多的改进,以使其基于底层处理器的自动矢量化支持而可并行化。和avx指令集一