dfs算法中求数列的组合

/*

从13个书中挑选5个值,他们的组合可能是 什么,

如下代码

dfs深度遍历, 和全排列是一种方法,但是思路不同

*/

public class Main {
  static int count = 0;
  static int a[] = new int[6];
public static void main(String[] args) {
  boolean visit[] = new boolean[13];
  dfs(a,visit,1);
  System.out.println(count);
}

  private static void dfs(int[] a, boolean[] visit, int num) {
    if (num==6) {
      count++;
      return ;
  }
    for (a[num] = a[num-1]+1; a[num] < 13; a[num]++) { //根排列算法不同的是这里不是 a[num]=1
      if (visit[a[num]]==false){
      visit[a[num]]=true;
      num = num + 1;
      dfs(a, visit, num);
      num = num - 1;
      visit[a[num]] = false;
    }
  }
}
}

posted @ 2017-03-26 17:30  AmbitiousZy  阅读(304)  评论(0编辑  收藏  举报