码迷,mamicode.com
首页 > 编程语言 > 详细

201301 JAVA题目0-1级

时间:2016-08-16 23:59:25      阅读:420      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true;不满足时返回false。 

输入描述:

第一行是数据个数,第二行是输入的数据

输出描述:

返回true或者false

输入例子:
4
1 5 -5 1
输出例子:
true

 1 import java.util.*;
 2  
 3 public class Main46 {  
 4     public static void main(String[] args) {
 5         Scanner sc = new Scanner(System.in);
 6         while(sc.hasNext()){
 7             int n = sc.nextInt();
 8             int sum1 = 0, sum2 = 0;
 9             int[] a = new int[n];
10             int count = 0;
11             for(int i =0;i<n;i++){
12                 int tmp = sc.nextInt();
13                 if(tmp%5==0){
14                     sum1+=tmp;
15                 }
16                 else if(tmp%3==0)
17                     sum2 += tmp;
18                 else{
19                     a[count++] = tmp;
20                 }
21             }
22             int sum = Math.abs(sum1-sum2);//这里只考虑绝对值就可以了
23             System.out.println(f(0,count,a,0,sum));
24         }
25     }
26  
27     public static boolean f(int i ,int n,int[] a,int result,int sum){
28         if(i==n){
29             return Math.abs(result) == sum;//绝对值相等就可以
30         }
31         else{
32             return (f(i+1,n,a,result+a[i],sum)||f(i+1,n,a,result-a[i],sum));
33         }
34     }
35 }

后边这个递归函数,想不到啊,有人说这是ksum问题,有空可以研究一下。

201301 JAVA题目0-1级

标签:

原文地址:http://www.cnblogs.com/lydandan/p/5778230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!