读书人

结合数的生成(II)

发布时间: 2012-11-09 10:18:48 作者: rapoo

组合数的生成(II)

#include <iostream>#include <cstdio>#define maxn 1000using namespace std;int hash[maxn];int b[maxn];int r, n;void dfs(int lev){    if(lev > r){        for(int i = 1; i <= r; i++){            printf("%d ", b[i]);        }        printf("\n");        return ;//回溯    }    for(int j = 1; j <= n; j++){        if(!hash[j] && j > b[lev-1]){//标记,控制后面的数比前面的数大。            b[lev] = j;            hash[j] = 1;            dfs(lev+1);            hash[j] = 0;//回溯        }    }}int main(){    while(scanf("%d%d", &n, &r) != EOF){        dfs(1);    }    return 0;}

1楼wangwenhao005天前 09:58
在第16行的return;可以去掉,但是后面要加else.谢谢体会回溯的条件。

读书人网 >编程

热点推荐