当前位置: 首页 > 知识库问答 >
问题:

求解递归

刁冠宇
2023-03-14

对于1≤i≤N,我被赋予F(0)=XF(i)=(A•F(i−1)^2 B•F(i−1)C)00000

现在给定N、A、B、C和X,如何有效地找到所有N个元素?

我需要把这N个元素分成2组,其中最大的元素在第一组,第二大的元素在第二组,第三大的元素在第一组,以此类推。。。最后需要找到两个集合元素之和的绝对差。

我可以在不计算所有元素的情况下找到这个差异吗?因为N可以大到最大值为100。

共有2个答案

席言
2023-03-14

如果我是你,我不会害怕计算那些10^7元素。因为它们的范围在[0 1000000[,所以可以计算值的直方图(1000000计数器),您将对其进行后处理以获取所需的信息(并遵循@Gassa)。

迭代公式时注意溢出,因为F^2不适合32位。

公西兴业
2023-03-14

请注意,序列的下一个元素仅取决于前一个元素,并且不同的元素不超过M=1000000,因为每个结果都是取1000000的整数。因此,序列从某个点开始是周期性的。您可以生成前几个元素(不超过M),直到找到周期,然后立即知道如果元素总数为N,每个元素有多少个。

现在,与10^7相比,10^6至少有一些改进。一旦你知道从0到999999的每个数字在序列中出现了多少次,你也可以在O(M)运算中找到所需的差异。

 类似资料:
  • 我正在尝试寻找到EndPotion的路径。这是一个递归函数。请帮助,我要自杀了。 这是给定的地图 我想递归地使用GetPath来到达上面地图中的EndPotion。参数是当前位置、结束位置和地图。对于这个例子,起始位置是(0,0)和结束,EndPotionis是(0,3),右上角。0代表墙壁,1代表路径。 我需要返回一个包含有效点的arraylist到结束位置。虽然我的数组大小始终为0,并且基本大

  • 问题内容: 为了编写一个解决C程序的蛮力迷宫,我首先编写了这个Java程序来测试一个想法。我对C还是很陌生,打算在Java中正确处理后将其转换。结果,我试图远离arraylist,fancy库等,以便更轻松地转换为C。该程序需要生成最短步骤的单个宽度路径来解决迷宫问题。我认为我的问题可能在于将通过每个递归传递的路径存储数组碎片化。感谢您的关注。-乔 代码中解释了数字符号 问题答案: 这本来不是要作

  • 问题内容: 我正在尝试使用递归编写一个迷宫求解器,似乎它尝试每个方向一次,然后停止,我不知道为什么。如果您发现问题,请告诉我。钥匙0是一个开放空间1是墙壁2是路径的一部分3是迷宫的末端 问题答案: 在过去五个小时中,您已经问过有关此迷宫递归难题的四个问题,这证明它有多复杂。这整个概念的1/0迷宫电网已吸引了我,我想出了一个类,使它成为一个 整体 变得简单许多。如果需要进行递归,那么它将对您没有用,

  • 我得到了一些构建迷宫的代码,以及任何其他需要的东西,抽象迷宫类包含一个抽象方法“makeMove(int row,int col)”。这是我试图编写的解决迷宫的方法,向左、向右、向上、向下移动。 我刚刚开始做这件事,下面是我到目前为止的全部资料。 好的,我让代码运行到不再出现错误的地方。 感谢所有的帮助。

  • 我正在用Java构建一个数独求解器,我正在使用回溯算法。有一个堆栈溢出错误,我怀疑在我的代码中有无限递归。我知道我提供的信息很少,但我太难了,不知道该怎么做。 网格是一个9乘9的数组,表示每个数独平方,它保存一个名为“value”的自定义类型,该类型简单地包含一个整数和一个布尔值,“IsOriginal”指示该值是给定的还是可更改的。 “moveon”是一个全局变量,它的值在“checkall”中

  • 我试图在Scala中使用递归来解决背包问题,但我的要求是显示选择哪些项目保存在背包中。表示背包大小。 我的代码如下: 如何知道选择哪些物品放在背包里?