被这几个题目搞混了# JobHunting - 待字闺中
g*j
1 楼
subset, combination, permutation
这几个题目非常相似,思路是递归,记住当前的位置,取或者不取两种情况,然后下一
层递归,但是我有两个地方对这三个地方很不清楚,第一个是
1) 哪种情况需要判断一个元素是否使用过,就是需要使用used数组传给下一层递归?
2) 哪种情况需要在递归call了之后,把前面的添加的元素去掉?
我的理解是,
1) 只有permutation需要使用used的数组,其他两个都不需要,因为只有permutation
才涉及到位置,其他两个,都只看当前位置后面的元素。如果permutation里面用swap
把需要放的数据和当前位置的数据对换的话,也不需要used。
2) 在call了递归函数后,都需要把前面添加的元素去掉。
希望各位大牛指正。
这几个题目非常相似,思路是递归,记住当前的位置,取或者不取两种情况,然后下一
层递归,但是我有两个地方对这三个地方很不清楚,第一个是
1) 哪种情况需要判断一个元素是否使用过,就是需要使用used数组传给下一层递归?
2) 哪种情况需要在递归call了之后,把前面的添加的元素去掉?
我的理解是,
1) 只有permutation需要使用used的数组,其他两个都不需要,因为只有permutation
才涉及到位置,其他两个,都只看当前位置后面的元素。如果permutation里面用swap
把需要放的数据和当前位置的数据对换的话,也不需要used。
2) 在call了递归函数后,都需要把前面添加的元素去掉。
希望各位大牛指正。