字符串组合算法
全组合例如给定字符串“abc”,全组合意思从中去0个元素,1个元素,一直到n个元素,介绍二进制做法。以字符串“abc”为例:000 <---> NULL001 <---> c010 <---> b011 <---> bc100 <---> a101 <---> ac110 <---> ab111 <---> abc
思路出来了,代码也比较好写,分享一下我的代码:
/** * 递归法解决组合问题 */void combine(int *arr, int n, int m, int *tmp, const int M){int i, j;for (i = n; i >= m; i --) {tmp[m] = i;if (m == 0) {// 选出m个数for (j = 0; j < M; j ++) {printf("%d ", arr[tmp[j]]);}printf("\n");} else {combine(arr, i - 1, m - 1, tmp, M);} }}回溯暂时不会,谁给思路可以评论指导我以下