23-11-2009, 11:14
|
|
|
חבר מתאריך: 06.06.07
הודעות: 749
|
|
טוב גבר זה מה שעשיתי
יש לי בעיה קטנה של יעילות
אבל הקוד נותן לי תשובות טובות
אשמח שתעיף מבט
תודה
קוד PHP:
public class ifFillBag
{
static int arrPosition = 0;
static boolean answer = false;
public static boolean isFillBag(int[] arr, int num)
{
if(arrPosition == arr.length)
{
return answer;
}
else if(arr[arrPosition] == num)
{
System.out.println(arr[arrPosition]);
answer = true;
return answer;
}
else if(arr[arrPosition] < num)
{
int count = arr[arrPosition];
String values = arr[arrPosition] + " ";
int position = 0;
boolean isTrue = false;
answer = isFillBag(arr, num, arrPosition, position, count, isTrue, values);
}
if(!answer && arrPosition < arr.length)
{
arrPosition++;
answer = isFillBag(arr, num);
}
return answer;
}
private static boolean isFillBag(int[] arr, int num, int arrPosition, int position, int count, boolean isTrue, String values)
{
if(position == arr.length)
{
return isTrue;
}
else
{
if(position == arrPosition)
{
position++;
isTrue = isFillBag(arr, num, arrPosition, position, count, isTrue, values);
}
else if(count == num)
{
System.out.println(values);
isTrue = true;
return isTrue;
}
else if(count < num)
{
count += arr[position];
if(count <= num)
{
values += arr[position] + " ";
}
else
{
count -= arr[position];
}
position++;
isTrue = isFillBag(arr, num, arrPosition, position, count, isTrue, values);
}
else
{
position++;
isTrue = isFillBag(arr, num, arrPosition, position, count, isTrue, values);
}
if(position < arr.length)
{
position++;
isTrue = isFillBag(arr, num, arrPosition, position, count, isTrue, values);
}
return isTrue;
}
}
}
|