输出描述:
给定的数组有多少个“数组合”
输入例子:
3
1 2 3
输出例子:
15
解题思路,本题可以考虑使用循环递归的算法:
以下代码仅供参考
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Main{
static int index=0;
public static void main(String[] args) {
Scanner mScanner=new Scanner(System.in);
int num=mScanner.nextInt();
List<String> array=new ArrayList<String>();
for (int i = 0; i < num; i++) {
array.add(mScanner.next()+"");
}
listAll(array, "");
System.out.println(index-1);
}
public static void listAll(List list, String prefix) {
index++;
//if (list.isEmpty()) {
// System.out.print(prefix+" ");
//}
int len = list.size();
for (int i = 0; i < len; i++) {
List temp = new LinkedList(list);
listAll(temp, prefix + temp.remove(i));
}
}
}
后来我又想了下,觉得这样理解
假设输入数据为n,输出的结果为f(n).