哪位大虾帮忙写个矩阵算法,实在写不出来了!(java,排列组合问题)

来源:百度知道 编辑:UC知道 时间:2024/06/25 16:04:32
问题是这样的,我有一个数组,现假设为
String s[]={"A","B","C","D"};
有表示结果的
String value[]={"true","false"};
想排列成
[true,false,false,false],
[true,true,false,false],
[true,true,true,false],
......
[false,false,false,flase]
这样的结果,现在的关键是不知道s的长度,也许是4条,也许更多,他们组成的结果要排列成多少条也不知道,需要计算才能知道。
恳请哪为大虾用java帮忙解决以下
二位忽略了一点,就是类似
true,false,true,false
的情况没有出现,更复杂的就更不好说了,呵呵。

最简单的做法就是 利用数学,把组合想象成一个二进制数;
假设String s[]={"A","B","C","D"}; 则最小的为0000b,最大的为1111b,即0~15,现在就很简单了 把0~15表示成二进制就可以了

String s[]={"A","B","C","D"};
int max=1;
for(int i=0;i<s.length;i++){
max*=2;
}
max-=1;

for(int i=0;i<max;i++){
int n=i;
for(int j=0;j<s.length;j++){
System.out.print(n%2);
n/=2;
}
System.out.println();
}

//注释我就不加了,我相信你能很轻松的看明白
public class perCom {

public static void main(String[] args) {
String a[] = {"A", "B", "C", "D", "E"};//可随意改变其大小
String value[] = {"true", "false"};

int aLenght = a.length;

int circleTime = aLenght*2;

int b[] = new int[aLenght];

for(int j = 0; j < aLenght; j++)
{
b[j]=0;
}<