您的位置:首页 > 编程语言 > Java开发

【华为OJ】201301 JAVA 题目0-1级

2015-10-14 22:45 399 查看
该题的思路是:

首先将遍历整个数组

1、 把所有5倍数的数加起来存在一个变量num1 中

2、把所有3倍数的数加起来存在一个变量num2 中

3、剩余的数据存在一个list中

把两个变量相减得到一个差值 dif=num1 -num2

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
static Scanner scanner;
public static void main(String[] args) {
// TODO Auto-generated method stub
scanner=new Scanner(System.in);
int len=scanner.nextInt();
int[]arrays=new int[len];
for(int i=0;i<len;i++){
arrays[i]=scanner.nextInt();
}

boolean flag=SplitArrysIntoTwoArrays(arrays);
System.out.println(flag);

}
private static boolean SplitArrysIntoTwoArrays(int[] arrays) {

int fiveCount=0;
int threeCount=0;

ArrayList<Integer> arrayList=new ArrayList<Integer>();
for(Integer arr:arrays){
if(arr%5==0){
fiveCount+=arr;
}if(arr%3==0){
threeCount+=arr;
}else {
arrayList.add(arr);
}
}

int diff=fiveCount-threeCount;

ArrayList<Integer> arrayList2=new ArrayList<Integer>();
arrayList2.add(0);
for(Integer alist:arrayList){
arrayList2=jizhihanshu(arrayList2,alist);
}

for(Integer sum:arrayList2){
if(sum==diff||sum==diff*(-1)){
return true;
}
}

return false;
}
private static ArrayList<Integer> jizhihanshu(
ArrayList<Integer> arrayList2, Integer alist) {
ArrayList<Integer> arrayList3=new ArrayList<Integer>();
for(Integer alist2: arrayList2){
arrayList3.add(alist2+alist);
arrayList3.add(alist2-alist);
}
return arrayList3;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: