class TestSum12
{
public static void main(String[] args)
{
int[]arr = new int[]{2,6,9,4,0,1,8,2,7,2,2,4,2,1,1,1,1,-1};//给定数组
int t = 8;//条件。
//如果符合条件打印单个元素
int sum = 0;
for (int i=0; i<arr.length; i++)
{
if(arr[i]==t)
System.out.println(arr[i]+"["+i+"]"+" = "+t);
sum = sum+arr[i];
}
//如果符合条件,打印全部元素的组合
if(sum==t)
{
for (int i=0; i<arr.length-1; i++)
{
System.out.print(arr[i]+"["+i+"]"+" +");
}
System.out.println(arr[arr.length-1]+"["+(arr.length-1)+"]"+" = "+t);
}
//打印其余的每一种相同的组合
for (int i=2; i<arr.length; i++)
{
compound(arr, i, t);//调用函数
}
}
//这个方法用来打印符合条件的其他组合
//这个方法不能打印从中取出一个元素的组合
//也不能打印从中取出所有元素的组合,不知道差在哪里
//欢迎大家给出意见
//但是好在它现在貌似可以打印所有的其他组合,
//我小试了一下,是可以的,按照我的思路也应该没有问题
//我不想再思考了,太耗费时间。
public static void compound(int []arr, int n, int t)
{
int sum = 0;
int x[] = new int[n];//临时数组,用来存放并控制循环的指针