【问题标题】:Dividing a set of numbers in to two sets such that sum of elements in each set must be equal将一组数字分成两组,使得每组中的元素之和必须相等
【发布时间】:2015-01-27 23:39:20
【问题描述】:

我已经为以下问题陈述了一个java程序-

“将一组数字分成两个集合,使得每个集合中的元素之和必须相等”

输入:整数数组

输出:

“是”-如果集合可以分为两个相等的和,

“否”-如果不能一分为二,则

“无效”-如果整数数组包含任何其他类型的整数(正整数除外)

我已经将代码提交给在线编译器,我编写的代码已经通过了 10 个测试用例中的 8 个。我很努力,但我无法成功找到这两个失败的测试用例。那两个失败的测试用例是什么?这是代码-

public class CandidateCode {

    public static String partition(int[] arr) {
        int sum = getSum(arr);
        int half = sum / 2;
        int out = 0;
        int i = 0;

        boolean flag = false;
        if (hasZero(arr)) {
            return "Invalid";
        }
        if (sum % 2 != 0) {
            return "No";
        }
        if (arr.length == 2) {
            if (arr[0] == arr[1]) {
                return "Yes";
            }
            return "No";
        }

        else {

            while (i < arr.length) {
                if (arr[i] < half)
                    out += arr[i];
                if (out == half) {
                    flag = true;
                    break;
                }
                i++;
            }

        }
        if (flag)
            return "Yes";
        else
            return "No";
    }

    public static int getSum(int[] arr) {
        int result = 0;
        for (int i = 0; i < arr.length; i++) {
            result += arr[i];
        }
        return result;
    }

    public static boolean hasZero(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] <= 0) {
                return true;
            }

        }
        return false;
    }
}

【问题讨论】:

标签: java arrays testing puzzle


【解决方案1】:

一个会失败的测试用例是一个包含以下内容的数组:

4 8 4

【讨论】:

  • 不,这个测试用例没有失败,我已经检查过了,它返回“是”,这是预期的。 @Sbodd
  • 那您能说明一下您的要求吗?我根据您的代码假设必须对数组进行分区-例如从 0 到 N 的所有元素的总和必须为一半。
  • 如果允许任意分区,那么我认为 2 2 6 4 2 将无法通过您的测试。
  • “将一组数字分成两个集合,使得每个集合中的元素之和必须相等”输入:整数数组输出:“是”-如果集合可以分成两个相等sum, "No" -if 不能一分为二等于 sum, "Invalid" -if 整数数组包含任何其他类型的整数(正整数除外),这个都是必须的。
猜你喜欢
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 2019-11-16
  • 2013-11-08
  • 1970-01-01
相关资源
最近更新 更多