Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';我在试着理解如何打印一个数组的所有可能的组合 i=start; 而(i=r-指数): 数据[索引]=arr[i]; 组合Util(arr,数据,i+1, 结束,索引+1,r); i+=1;_Python_Algorithm_Recursion_Combinations_Backtracking - Fatal编程技术网

Python I';我在试着理解如何打印一个数组的所有可能的组合 i=start; 而(i=r-指数): 数据[索引]=arr[i]; 组合Util(arr,数据,i+1, 结束,索引+1,r); i+=1;

Python I';我在试着理解如何打印一个数组的所有可能的组合 i=start; 而(i=r-指数): 数据[索引]=arr[i]; 组合Util(arr,数据,i+1, 结束,索引+1,r); i+=1;,python,algorithm,recursion,combinations,backtracking,Python,Algorithm,Recursion,Combinations,Backtracking,我很难理解为什么需要“end-I+1>=r-index”这个条件,我试过运行代码,不管有没有,它都会产生相同的输出,我想知道是什么边缘情况导致这个条件返回False 尝试将变量分成更容易理解的部分,例如 i = start; while(i <= end and end - i + 1 >= r - index): data[index] = arr[i]; combinationUtil(arr, data, i + 1,

我很难理解为什么需要“end-I+1>=r-index”这个条件,我试过运行代码,不管有没有,它都会产生相同的输出,我想知道是什么边缘情况导致这个条件返回False


尝试将变量分成更容易理解的部分,例如

i = start; 
while(i <= end and end - i + 1 >= r - index): 
    data[index] = arr[i]; 
    combinationUtil(arr, data, i + 1, 
                    end, index + 1, r); 
    i += 1; 
现在我们可以这样解释:

int values_left_to_print = r - index; // (size of combination to be printed) - (current index into data)
int values_left_in_array = end - i + 1; // number of values left until the end of given arr
顶层函数将开始与1形成组合,然后与2形成(1,2,3),(1,2,4),(1,3,4)

它不会尝试3和4,因为
(数组中的值\u left\u

如果条件不存在,则函数将尝试3和4,但序列中的值在给定数组中仅从左到右增加索引,因此组合将结束,因为
i
将在能够找到3个值之前到达
end


我不确定你是想理解这个(不完整的)片段还是想解决这个问题。如果是后者:我试图理解这个片段,完整的代码在链接中提供。
for (int i = start; i <= end && (values_left_in_array >= values_left_to_print); i++)  
{
arr = {1,2,3,4}
n = 4; // size of arr
r = 3; // size of combination