编写一个函数,如果可以将数组划分为一个元素和其余元素,则 returns 为真,这样该元素等于乘积
Write a function that returns true if you can partition an array into one element and the rest, such that this element is equal to the product
package ArrayPractice;
import java.util.Arrays;
import java.util.Scanner;
public class Question7 {
public boolean canPartition(int[] data) {
Arrays.sort(data);
int i = data[data.length - 1];
System.out.println(i);
int x = 1;
int v = 1;
for (int y = 0; y <= data.length - 2; y++) {
x = data[y];
v *= x;
}
if (v == i) {
return true;
}
return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the array range: ");
int x = sc.nextInt();
int[] testing = new int[x];
for (int y = 0; y < testing.length; y++) {
System.out.println("Enter the Array number: " + y);
testing[y] = sc.nextInt();
}
Question7 question7 = new Question7();
System.out.println(question7.canPartition(testing));
}
}
编写一个函数,如果您可以将数组划分为一个元素和其余元素,则 returns 为真,
使得该元素等于除自身以外的所有其他元素的乘积。
canPartition([2, 8, 4, 1]) ➞ true
8 = 2 x 4 x 1
canPartition([-1, -10, 1, -2, 20]) ➞ false
canPartition([-1, -20, 5, -1, -2, 2]) ➞ true
我的程序对正值有效,但对负值失败。
至少你可以用两个嵌套循环来做到这一点,并将每个项目与其余项目的产品进行比较:
private static boolean canPartition(int[] data) {
for(int i = 0; i < data.length; i++) {
int prd = 1;
for(int j = 0; j < data.length; j++) {
if (j == i) continue;
prd *= data[j];
}
if (prd == data[i]) return true;
}
return false;
}
package ArrayPractice;
import java.util.Arrays;
import java.util.Scanner;
public class Question7 {
public boolean canPartition(int[] data) {
Arrays.sort(data);
int i = data[data.length - 1];
System.out.println(i);
int x = 1;
int v = 1;
for (int y = 0; y <= data.length - 2; y++) {
x = data[y];
v *= x;
}
if (v == i) {
return true;
}
return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the array range: ");
int x = sc.nextInt();
int[] testing = new int[x];
for (int y = 0; y < testing.length; y++) {
System.out.println("Enter the Array number: " + y);
testing[y] = sc.nextInt();
}
Question7 question7 = new Question7();
System.out.println(question7.canPartition(testing));
}
}
编写一个函数,如果您可以将数组划分为一个元素和其余元素,则 returns 为真, 使得该元素等于除自身以外的所有其他元素的乘积。
canPartition([2, 8, 4, 1]) ➞ true
8 = 2 x 4 x 1
canPartition([-1, -10, 1, -2, 20]) ➞ false
canPartition([-1, -20, 5, -1, -2, 2]) ➞ true
我的程序对正值有效,但对负值失败。
至少你可以用两个嵌套循环来做到这一点,并将每个项目与其余项目的产品进行比较:
private static boolean canPartition(int[] data) {
for(int i = 0; i < data.length; i++) {
int prd = 1;
for(int j = 0; j < data.length; j++) {
if (j == i) continue;
prd *= data[j];
}
if (prd == data[i]) return true;
}
return false;
}