Java > Recursion-2 > groupSum6 (CodingBat Solution)

Problem:

Given an array of ints, is it possible to choose a group of some of the ints, beginning at the start index, such that the group sums to the given target? However, with the additional constraint that all 6's must be chosen. (No loops needed.)

groupSum6(0, {5, 6, 2}, 8) → true
groupSum6(0, {5, 6, 2}, 9) → false
groupSum6(0, {5, 6, 2}, 7) → false


Solution:

public boolean groupSum6(int start, int[] nums, int target) {
  if (start >= nums.length)
    return (target == 0);
 
  if (groupSum6(start+1, nums, target - nums[start])) return true;
  if (nums[start] != 6 && groupSum6(start+1, nums, target)) return true;
  
  return false;
}


6 comments :

  1. // not that effective sollution but does the same thing i guess
    public boolean groupSum6(int start, int[] nums, int target) {
    if(start >= nums.length){
    return target == 0;
    }
    if(nums[start] == 6){
    if( groupSum6(start + 1, nums, target - nums[start])) return true;
    } else {
    if( groupSum6(start + 1, nums, target - nums[start])) return true;
    if( groupSum6(start + 1, nums, target)) return true;
    }
    return false;
    }

    ReplyDelete
  2. public boolean groupSum6(int start, int[] nums, int target) {
    if (start > nums.length - 1) return (target == 0) ? true : false;
    if (nums[start] == 6) return groupSum6(start+1, nums, target - 6);
    return (groupSum6(start + 1, nums, target - nums[start])) ? true : groupSum6(start+1, nums, target);
    }

    ReplyDelete
  3. public boolean groupSum6(int start, int[] nums, int target) {
    if (start >= nums.length)
    {
    return target == 0;
    }
    else
    {
    if (nums[start] == 6)
    {
    return groupSum6(start + 1, nums, target - 6);
    }
    else
    {
    return groupSum6(start + 1, nums, target) || groupSum6(start + 1, nums, target - nums[start]);
    }
    }
    }

    ReplyDelete
  4. public boolean groupSum(int start, int[] nums, int target) {
    if(start >= nums.length){
    return (target == 0);
    }
    return groupSum(start + 1, nums, target - nums[start]) || groupSum(start + 1, nums, target);
    }

    ReplyDelete
  5. public boolean groupSum(int start, int[] nums, int target) {
    if(start >= nums.length){
    return (target == 0);
    }
    return groupSum(start + 1, nums, target - nums[start]) || groupSum(start + 1, nums, target);
    }

    ReplyDelete
  6. public boolean groupSum(int start, int[] nums, int target) {
    if(start >= nums.length){
    return (target == 0);
    }
    return groupSum(start + 1, nums, target - nums[start]) || groupSum(start + 1, nums, target);
    }

    ReplyDelete

Follow Me

If you like our content, feel free to follow me to stay updated.

Subscribe

Enter your email address:

We hate spam as much as you do.

Upload Material

Got an exam, project, tutorial video, exercise, solutions, unsolved problem, question, solution manual? We are open to any coding material. Why not upload?

Upload

Copyright © 2012 - 2014 Java Problems  --  About  --  Attribution  --  Privacy Policy  --  Terms of Use  --  Contact