backtracking

    1热度

    1回答

    我在实现函数中的回溯时遇到问题,我觉得我只是需要一点点推动。我有一个代码打架的问题,我将链接here 你需要爬上一个有n个台阶的楼梯,并且你决定通过跳上台阶来获得一些额外的锻炼。一次跳跃最多可以覆盖k个步骤。返回您可能需要爬上楼梯的所有可能的跳跃顺序,排序。 对于n = 4,K = 2,输出应该是: climbingStaircase(n, k) = [[1, 1, 1, 1], [1, 1, 2

    0热度

    2回答

    我正在解决palindrome partitioning on Leetcode的问题。 我写了一个递归解决方案,它打印正确的子串列表,但对于其中一个测试用例,列表中的顺序与预期的输出不匹配。 输入: cbbbcc 输出: [[ “C”, “B”, “B”, “B”,” C”, “C”],[ “b”, “b”, “b”, “C”, “CC”],[ “b”, “C”, “BB”, “C”, “C”

    2热度

    1回答

    我想在弗吉尼亚在线评测解决问题Uva-10128 (Queue)。我无法找到解决此问题的方法。我搜索互联网上,发现大部分的人已经通过使用DP precalulating解决了这个问题。 DP[1][1][1] = 1; for(N = 2; N <= 13; N++) for(P = 1; P <= N; P++) for(R = 1; R <= N; R++)

    0热度

    1回答

    我最近被分配了一个问题,归结为找到给定矩阵中最长的路径,其中两个单元相邻,如果相邻值小于当前单元。我一直在试图弄清楚自己的头发,所以我会非常感谢任何帮助。然而,正如我所说,这是一项家庭作业,所以建议和提示非常受欢迎(但尽量不要让我太容易)。 这里是我的代码的最新版本: #include <stdio.h> int isValid(int i, int j, int rows, int cols

    1热度

    1回答

    我想实现一个递归回溯解决方案到soduko板,但是,我得到一个不正确的解决方案的板。我不确定为什么当我的复发是正确的时候: bool solveSudoku(vector< vector<char> >& board) { for (int i=0; i<9; ++i){ for (int j=0; j<9; ++j){ if (board[i][j]=='.'

    0热度

    2回答

    您需要爬上一个有n个步骤的楼梯,并且您决定通过跳上台阶来获得一些额外的锻炼。一次跳跃最多可以覆盖k个步骤。返回您可能需要爬上楼梯的所有可能的跳跃顺序,排序。 我的实现显然给了我错误的答案。 def climbingStaircase(n, k): final_res=[] final_res.append(CSR(n,k,[])) return final_res

    -1热度

    1回答

    我试图用回溯来解决这个问题,但我不确定算法的复杂性(如果算法是正确的)以及什么是复杂度更高的算法。 鉴于2个的正整数n和m,我们把合法整数的序列,如果: 的序列的长度为n 序列中的元素是1且m 之间在位置i的元素的序列的,1 <我< = n时,是元件的位置中的除数I-1 计数法定序列的数目。预计该算法的复杂度为O(平方米+纳米) 这是我在C算法: // n length of the sequen

    1热度

    2回答

    [ 42, 45, 47, x, x] -> stop1 to stop2 [ 45, 47, 42, 88, x] -> stop2 to stop3 [ 21, 77, 42, x, x] -> stop3 to stop4 [ 22, 47, 42, 88, x] -> stop4 to stop5 [ 23, 47, 42, x, x] -> stop5 to stop6 [ 2

    1热度

    1回答

    我最近出现了一个求职面试,当时我被问到流行的RAT IN A MAEE问题,其中有一个由2维数组表示的迷宫,分别包含0和1的开放路径和墙,我们必须打印最短路径。 我使用回溯解决了问题,并且还打印了所有可能的路径。 但随后采访者提高了韧性水平,并要求我用一种新的条件来解决同一个问题,在这种情况下,老鼠可以绊倒“K”数量的墙,K由用户输入。 现在我尝试了很多,但无法弄清楚如果跳闸K墙被允许,如何找到最

    5热度

    3回答

    input: max_weight = 550 n = 4 x_i = [120, 175, 250, 150] output: 2 // [[250, 175, 120], [150]] 我的初步印象是,这看起来非常相似,动态规划硬币找零/背包问题,但它不是硬币改变(这会要求最少数量的权重来确定一个数量),而不是背包(权重没有值,它就像我可以有超过1个背包)。 这个问题是否有一