递归打印组合数搜索模板
Posted X-man
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归打印组合数搜索模板相关的知识,希望对你有一定的参考价值。
- //从后往前选取,选定位置i后,再在前i-1个里面选取m-1个。
- //如 1 2 3 4 5 中选取 3 个
- //1、选取5后,再在前4个里面选取2个,而前4个里面选取2个又是一个子问题,递归即可。
- //2、如果不包含5,直接选定4,那么再在前3个里面选取2个,而前三个里面选取2个又是一个子问题,递归即可。
- //3、如果也不包含4,直接选取3,那么再在前2个里面选取2个,刚好只有两个。
- //纵向看,1、2、3刚好是一个for循环,初值为5,终值为m
- //横向看,该问题为一个前i-1个中选m-1的递归。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; # define MAXN 100 int a[MAXN]; void comb(int m, int k) { int i, j; if(k<1) { for (j=a[0]; j>0; j--)//a[a[0]],……,a[1] printf("%4d",a[j]); printf("\n"); return ; } for (i = m; i >= k; i--) { a[k] = i; comb(i - 1, k - 1); } } int main() { int k=4; int m=5; a[0] = k; comb(m,k);//a[0]保持输出的个数 return 0; }
迷宫搜索类题目模板
以上是关于递归打印组合数搜索模板的主要内容,如果未能解决你的问题,请参考以下文章