20-11-2009, 03:57
|
|
|
חבר מתאריך: 25.09.09
הודעות: 63
|
|
הנה פתרון שלי בשפת C# , תוכל להמיר בקלות לג'אבה:
קוד PHP:
public static bool IsPossible(int[] Bills, int Amount) { int Length = Bills.Length; return IsPossible(Bills, new int[Length], new bool[Length], Amount, Length); }
private static bool IsPossible(int[] Bills, int[] Sums, bool[] shouldContinue, int Amount, int Length) { for (int i = 0; i < Length; i++) { Sums[i] += Bills[i];
if (Sums[i] == Amount) return true;
else if (Sums[i] < Amount) shouldContinue[i] = true; }
for (int i = 0; i < Length; i++) if (shouldContinue[i]) return IsPossible(Bills, GetFormattedArray(Length, Sums[i]), new bool[Length], Amount, Length);
return false; }
private static int[] GetFormattedArray(int arrayLength, int defaultValue) { int[] arr = new int[arrayLength]; for (int i = 0; i < arrayLength; i++) arr[i] = defaultValue;
return arr; }
תוכל להכניס מערך של שטרות שונים (או מטבעות, או כל מספר שלם אחר) :
קוד:
int[] allowedBills = { 20, 50, 100 };
Console.WriteLine(IsPossible(allowedBills, 130));
נערך לאחרונה ע"י trialusert בתאריך 20-11-2009 בשעה 04:00.
|