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; }
// not that effective sollution but does the same thing i guess
ReplyDeletepublic 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;
}
public boolean groupSum6(int start, int[] nums, int target) {
ReplyDeleteif (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);
}
public boolean groupSum6(int start, int[] nums, int target) {
ReplyDeleteif (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]);
}
}
}
public boolean groupSum(int start, int[] nums, int target) {
ReplyDeleteif(start >= nums.length){
return (target == 0);
}
return groupSum(start + 1, nums, target - nums[start]) || groupSum(start + 1, nums, target);
}
public boolean groupSum(int start, int[] nums, int target) {
ReplyDeleteif(start >= nums.length){
return (target == 0);
}
return groupSum(start + 1, nums, target - nums[start]) || groupSum(start + 1, nums, target);
}
public boolean groupSum(int start, int[] nums, int target) {
ReplyDeleteif(start >= nums.length){
return (target == 0);
}
return groupSum(start + 1, nums, target - nums[start]) || groupSum(start + 1, nums, target);
}