题解 | #数组分组#

数组分组

http://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNextInt()){
            int n = in.nextInt();
            int[] num = new int[n];
            List<Integer> list = new ArrayList<>();
            int cha = 0;
            int sum = 0;
            for(int i=0; i<n; i++){
                int temp = in.nextInt();
                if(temp%5 == 0){
                    cha += temp;
                } else if(temp%3 == 0){
                    cha -= temp;
                } else {
                    sum += temp;
                    list.add(temp);
                }
            }
            sum += cha;
            list.add(cha);
            
            if(sum % 2 != 0){
                System.out.println("false");
            } else if(list.size() == 0){
                System.out.println("true");
            } else {
                if(canDiv(list, 0, sum/2)){
                    System.out.println("true");
                } else {
                    System.out.println("false");
                }
            }
        }
    }

    public static boolean canDiv(List<Integer> list, int index, int sum){
        if(index == list.size()) return sum == 0;
        return canDiv(list, index+1, sum-list.get(index))||
            canDiv(list, index+1, sum);
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务