搜索组合数

#include<stdio.h>
 
int a[10];
 
void backtrack(int n, int r, int k){
 if(k >= r){
  for(int i = 0; i < r; ++i){
   printf("%d", a[i]);
  }
  printf("\n");
  return;
 }
 for(int i = (k == 0 ? n : a[k - 1] - 1); i >= 1; --i){
  a[k] = i;
  backtrack(n, r, k + 1);
 }
}
 
int main(){
 int n, r;
 while(~scanf("%d%d", &n, &r)){
  backtrack(n, r, 0);
 }
 return 0;
}

原文地址:https://www.cnblogs.com/CAOYR/p/5469091.html