Java 用数组值计算n个可能性
我有三个数组Java 用数组值计算n个可能性,java,android,data-structures,Java,Android,Data Structures,我有三个数组 A[]={"a","b"},B[]={"c","d"},C[]={"e","f"}. Output={"ace"},{"acf"},{"ade"},{"adf"},{"bce"},{"bcf"},{"bde"},{"bdf"} 通过使用这三个数组,我必须计算可能性。 类似地,我想计算n个数组的可能性。使用这种方法 for (int i = 0; i <A.length ; i++) { for (int j = 0; j <B.length ; j
A[]={"a","b"},B[]={"c","d"},C[]={"e","f"}.
Output={"ace"},{"acf"},{"ade"},{"adf"},{"bce"},{"bcf"},{"bde"},{"bdf"}
通过使用这三个数组,我必须计算可能性。
类似地,我想计算n个数组的可能性。使用这种方法
for (int i = 0; i <A.length ; i++) {
for (int j = 0; j <B.length ; j++) {
for (int k = 0; k <C.length ; k++) {
Log.e("output",A[i]+B[j]+C[k]);
}
}
}
对于(int i=0;i可以通过回溯来解决,请查找下面的代码
import java.util.ArrayList;
import java.util.List;
public class NumberOfPossibilities {
public static void main(String[] args) {
List<String> result = new ArrayList<String>();
StringBuilder builder = new StringBuilder();
char[] A = {'a', 'b'};
char[] B = {'c', 'd'};
char[] C = {'e', 'f'};
List<char[]> list = new ArrayList<>();
list.add(A);
list.add(B);
list.add(C);
dfs(list, result, builder, 0);
for (String str : result)
System.out.println(str);
}
public static void dfs(List<char[]> list, List<String> result, StringBuilder builder, int index) {
if (builder.length() == list.size()) {
result.add(builder.toString());
return;
}
for (char ch : list.get(index)) {
builder.append(ch);
dfs(list, result, builder, index + 1);
builder.setLength(builder.length() - 1);
}
}
import java.util.ArrayList;
导入java.util.List;
公营班级人数{
公共静态void main(字符串[]args){
列表结果=新建ArrayList();
StringBuilder=新的StringBuilder();
char[]A={'A','b'};
char[]B={'c','d'};
char[]C={'e','f'};
列表=新的ArrayList();
列表.添加(A);
列表.添加(B);
增加(C)项;
dfs(列表、结果、生成器、0);
for(字符串str:result)
系统输出打印项次(str);
}
公共静态无效dfs(列表、列表结果、StringBuilder、int索引){
如果(builder.length()==list.size()){
add(builder.toString());
返回;
}
for(char-ch:list.get(index)){
附加(ch);
dfs(列表、结果、生成器、索引+1);
builder.setLength(builder.length()-1);
}
}
}