华为oj题java单词博弈_【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组
描述:
編寫一個函數,傳入一個int型數組,返回該數組能否分成兩組,使得兩組中各元素加起來的和相等,并且,所有5的倍數必須在其中一個組中,所有3的倍數在另一個組中(不包括5的倍數),能滿足以上條件,返回true;不滿足時返回false。
知識點:
語言基礎,字符串,循環,函數,指針,枚舉,位運算,結構體,聯合體,文件操作,遞歸
題目來源:
內部整理
練習階段:
初級
運行時間限制:
10Sec
內存限制:
128MByte
輸入:
輸入輸入的數據個數
輸入一個int型數組
輸出:
返回true或者false
樣例輸入:
4
1
5
-5
1
樣例輸出:
true
答案提示:
源代碼:
package?issplittwointarray;
import?java.util.ArrayList;
import?java.util.Scanner;
public?class?Main?{
public?static?void?main(String[]?args)?{
Scanner?sc?=?new?Scanner(System.in);
int?arrayLength?=?sc.nextInt();
int[]?intArray?=?new?int[arrayLength];
for(int?i?=?0;?i?
intArray[i]?=?sc.nextInt();
}
boolean?isSplitTwoEqualArrays?=?Main.isSplitTwoEqualArray(intArray);
System.out.println(isSplitTwoEqualArrays);
}
public?static?boolean?isSplitTwoEqualArray(int[]?intArray){
int?multipleOfFiveSum?=?0;
int?multipleOfThreeSum?=?0;
ArrayList?otherInts?=?new?ArrayList();
for(int?i?=?0;?i?
if(intArray[i]?%?5?==?0){
multipleOfFiveSum?+=?intArray[i];
}?else?if(intArray[i]?%?3?==?0){
multipleOfThreeSum?+=?intArray[i];
}?else?{
otherInts.add(intArray[i]);
}
}
int?difference?=?multipleOfFiveSum?-?multipleOfThreeSum;
ArrayList?accumulationSum?=?new?ArrayList();
accumulationSum.add(0);
for?(Integer?otherInt?:?otherInts)?{
accumulationSum?=?Main.expressionsAccumulation(accumulationSum,?otherInt);
}
for?(Integer?sum?:?accumulationSum)?{
if((sum?==?difference)?||?(sum?==?difference?*?(-1)))
return?true;
}
return?false;
}
public?static?ArrayList?expressionsAccumulation(ArrayList?preSums,?int?extraInt){
ArrayList?accumulationSum?=?new?ArrayList();
for?(Integer?preSum?:?preSums)?{
accumulationSum.add(preSum?+?extraInt);
accumulationSum.add(preSum?-?extraInt);
}
return?accumulationSum;
}
}
時間: 07-31
總結
以上是生活随笔為你收集整理的华为oj题java单词博弈_【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java事件的接收_spring发布和接
- 下一篇: 描述java源程序构成_Java第二章J
