华为OJ 两组数组相加之和相等

来源:互联网 发布:网络流媒体地址 编辑:程序博客网 时间:2024/05/18 01:47
题目描述编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true;不满足时返回false。 输入描述:第一行是数据个数,第二行是输入的数据输出描述:返回true或者false输入例子:41 5 -5 1输出例子:true
# Javaimport java.util.math;import java.util.Scanner;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            int n = sc.nextInt();            int sum1=0, sum2 = 0;            int count = 0;            int[] a = new a[n];            for(int i = 0; i < n; i++){                int temp = sc.nextInt();                if(temp % 5 == 0){                    sum1 += temp;                }else if(temp % 3 == 0){                    sum2 += temp;                }else{                    a[count++] = temp;                }            }            sum = math.abs(sum1 - sum2);            System.out.println(f(0,count,a,0,sum));        }    }    private static boolean f(int i, int n, int[] a, int result, int sum){        if(i == n)            return math.abs(result) == sum;        else{            return f(i+1, n, a, result + a[i], sum) || f(i+1, n, a, result-a[i], sum);        }    }}
0 0
原创粉丝点击