算法设计与分析课件 38 组合.pptxVIP

  • 3
  • 0
  • 约小于1千字
  • 约 10页
  • 2026-06-10 发布于山东
  • 举报

算法设计与分析本节要点CONTENTS组合

组合给定两个整数n和r,按照字典序输出自然数1到n中所有的r个数的组合。例如n=4,r=2,所有组合为:[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]。

问题分析:本题是一个组合问题。组合不区分次序,[1,2]和[2,1]是一样的,而对于排列,[1,2]和[2,1]是不同的。本题要求枚举1~n区间中r个数的所有组合。组合

例如,求解[1,2,3,4]中所有的2个数的组合。组合

在回溯法中,使用for循环实现横向枚举,使用递归实现纵向扩展。(1)横向枚举开始:第一层枚举的开始为1,其它层枚举的开始为上一层选择的数字i再加上1,例如上一层选择的数字i=2,则当前层从3(i+1)开始枚举。结束:因为要选择r个数的组合,当余下的数不够r个时,就不需要枚举了。上图中需要选择2个数,第一层的最后一个分支已经不够2个数,无需枚举。因此枚举的结束位置为n-r+1。组合

(2)纵向扩展在第一层,原问题是从1~n区间中选择r个数;在第二层,子问题变为从i+1~n区间中选择r-1个数,…,当k=0时,到达叶子,将递归过程中收集到的r个数作为一个组合放入答案数组中。组合

(1)递归函数的参数2个参数:r,start,表示选择r个数,当前枚举的起点为start。(2)递归函数的结束条件从第一层开始,从区间中选择r个数,

文档评论(0)

1亿VIP精品文档

相关文档