求多个变量的排列组合程序-C/JAVA/PHP/ASP/PYTHON均可

来源:百度知道 编辑:UC知道 时间:2024/05/27 02:21:57
求15个变量排列组合的算法-C/JAVA/PHP/ASP/PYTHON均可

格纹情况如下
有一个类似于这样的数组
CARR[]="A","B","C","D","E","F","G","H","I","J","K","L","M","N","O"}

现在我想打印出所有的组合,就像
AB, ABC, ACB, ABCD, ABDC, ACBD, ACDB, ADCB, ADBC, ABCDE .......
15个的组合都要,最后写入到一个txt文件内。

随便是C JAVA PHP ASP JSP PYTHON 语言都可以
只要能输出结果就好了

成功运行加分50
各位帮忙!加油!
rrroger兄,你嵌套了很多层么?不过这东西弄了很可能还要outofmemory呢...印象中有几个算法专门用于做这个的,可惜忘了名字了,哎...

15位的排列太大了,你恐怕没有考虑到,我这个例子只给了5位的一个排列,仅供参考

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;

public class Bd9Test {
BufferedOutputStream buffout ;

int combine(char a[], int n, int m) {
m = m > n ? n : m;

int[] order = new int[m + 1];
for (int i = 0; i <= m; i++)
order[i] = i - 1; // 注意这里order[0]=-1用来作为循环判断标识

int count = 0;
int k = m;
boolean flag = true; // 标志找到一个有效组合
while (order[0] == -1) {
if (flag) // 输出符合要求的组合
{
StringBuffer sb = new StringBuffer();
for (int i = 1; i <= m; i++)
sb.append(a[order[i]]);

/***** 如果你不需要排列只要组合,删除这段就可以了然后打印sb.toString()****/
PermutationGenerator x = new PermutationGenerator(sb.toString().length());
StringBuffer permutation;
int[] indices;
while (x.hasMore()) {
permutation = new St