21得票5回答
恰好具有k个逆序对的n元排列的数量

我正在尝试高效地解决SPOJ Problem 64: Permutations。 设A = [a1,a2,...,an]是整数1,2,...,n的一个排列。若存在一对下标(i,j),其中1≤i≤j≤n且ai>aj,则称(i,j)是排列A的一个逆序。给定正整数n>0和非负整数k,...

21得票11回答
寻找需要翻转的位数以获得数组中最大数量的1。

我们有一个如下的位数组{1 0 1 0 0 1 0 1} 以上数组中的位数为8 如果我们从[1,5]取范围,则[1,5] 范围内的位数为[0 1 0 0 1]。 如果我们翻转这个范围,那么翻转后它将变成[ 1 0 1 1 0] 因此,在翻转[1,5]范围后的1的总数是[1 1 0 1 1 0...

21得票10回答
如何将字符串拆分为单词。例如:"stringintowords" -> "String Into Words"?

如何将一个没有包含任何空格或标点符号的字符串正确分割成单词? 例如:"stringintowords" -> "String Into Words" 请问应该使用哪种算法? !更新:对于那些认为这个问题只是出自好奇心的人,这个算法可能被用来将驼峰式域名转换为正常形式("sportandf...

21得票3回答
动态规划中的最优子结构

我一直在尝试理解动态规划,我的理解是DP有两个部分。 最优子结构 重叠子问题 我理解第二个部分,但是我不理解第一个部分。

20得票4回答
在一个由1和0组成的矩阵中,查找所有只包含1的子矩阵中最大的那个子矩阵。

假设您有一个mXn位图,由数组M [1..m,1..n]表示,其条目均为0或1。全一块是形式为M [i..i0,j..j0]的子数组,其中每个位都等于1。请描述并分析一种有效的算法,以查找具有最大面积的M中的全一块。 我正在尝试制作动态规划解决方案。但是我的递归算法运行时间为O(n ^ n)...

20得票11回答
如何开发一个针对酒店问题的算法?

我正在为一门编程课程解决一个问题,但是我在开发适用于此问题的算法方面遇到了麻烦。问题如下: 你要进行一次长途旅行。你从第0英里标志处开始行驶。沿途有n家旅馆,它们位于里程碑a1 < a2 < ... < an处,其中每个ai都是从起点测量的。你只能在这些旅馆停留,但可...

19得票4回答
如何使用背包算法找出袋子中有哪些元素,而不仅仅是袋子的价值?

我这里有一段代码,使用背包算法(二进制装箱NP难问题)计算出最优值:int Knapsack::knapsack(std::vector<Item>& items, int W) { size_t n = items.size(); std::vector&...

19得票6回答
你需要为动态规划背包问题排序输入吗?

我发现在动态规划解决01背包问题时,每个例子中都存在物品的重量(成本)和收益,但从未明确提到需要对物品列表进行排序。然而,在所有这些例子中,它们都按照重量和收益递增的顺序进行排序(在这些例子中,重量越大,利润越高)。因此,我的问题是:当将物品从物品数组/列表添加到矩阵中时,我是否可以以任何顺序...

19得票2回答
如何用符号+ * ()和1以最小的代价表达整数?

任务是使用符号+ * ( )(加法、乘法和括号)和数字1构建整数。您将获得一个整数,必须输出使用最少字符的表达式。例如:4 = 1+1+1+1 23 = 11+11+1 242 = (11+11)*11 1000 = 1+(1+1+1)*(1+1+1)*111 199...

18得票12回答
S的最小硬币数量

给定N枚硬币的价值(V1,V2,...,VN)和总和S,找到使得它们的和为S的最小数量的硬币(我们可以使用任意数量的同一种硬币),或者报告无法选择硬币以便它们的和是S。 我试图理解动态规划,但还没想通。我不理解给出的解释,所以也许你能给我一些提示如何编程这个任务?不需要代码,只要点拨我该从哪...