לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #6  
ישן 19-11-2009, 16:46
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
כן, אבל גם שם אין אלגוריתם ברור
בתגובה להודעה מספר 3 שנכתבה על ידי דור שמתחילה ב "הבעיה שלך דומה מאוד לזו:..."

אם אינני טועה הפעולה צריכה להיות די פשוטה:

צריך לחלק את הסכום בערך השטר הגדול ביותר
ולהפחית מהסכום את החלק השלם של התוצאה כפול ערך השטר
על מה שנשאר יש לבצע את אותה הפעולה עם השטר הבא
אם הגענו לשטר האחרון ונותר סכום
יש לחזור על הפעולה כאשר מפחיתים 1 מהערך השלם (אבל לא יורדים מ0)
אם הגענו לשטר האחרון אחרים של השטרות הגדולים יותר מאופסים - לא ניתן לבצע את הפעולה

בדוגמא:
קוד:
שטרות 20,50,100 סכום 130 מחלקים ב 100 מקבלים 1 130 - 100*1 = 30 מחלקים ב 50 מקבלים 0 30 - 0*50 = 30 מחלקים ב 20 מקבלים 1 30 - 1*20 = 10 חוזרים ל 50, הערך הוא כבר 0 חוזרים ל 100 מפחיתים 1 130 - 100 *0 = 30 מחלקים ב50 מקבלים 2 130 - 50 * 2 = 30 מחלקים ב 20 מקבלים 1 30 - 1*20 = 10 חוזרים ל 50, מפחיתים 1 130 - 50*1 = 80 מחלקים ב20 מקבלים 4 80 - 20*4= 0 הצלחה!


*עריכה*

אופס!
עד שמצאתי אלגוריתם מישהו העלה קוד שמבצע אותו
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 20-11-2009, 03:57
  trialusert trialusert אינו מחובר  
 
חבר מתאריך: 25.09.09
הודעות: 63
בתגובה להודעה מספר 1 שנכתבה על ידי Moshe_LX שמתחילה ב "זקוק לאלגוריתם מתמטי"

הנה פתרון שלי בשפת C# , תוכל להמיר בקלות לג'אבה:
קוד PHP:
 public static bool IsPossible(int[] Billsint Amount)
{
    
int Length Bills.Length;
    return 
IsPossible(Bills, new int[Length], new bool[Length], AmountLength);
}

private static 
bool IsPossible(int[] Billsint[] Sumsbool[] shouldContinueint Amountint Length)
{
    for (
int i 0Lengthi++)
    {
        
Sums[i] += Bills[i];

        if (
Sums[i] == Amount)
            return 
true;

        else if (
Sums[i] < Amount)
            
shouldContinue[i] = true;
    }

    for (
int i 0Lengthi++)
        if (
shouldContinue[i])
            return 
IsPossible(BillsGetFormattedArray(LengthSums[i]), new bool[Length], AmountLength);

    return 
false;
}

private static 
int[] GetFormattedArray(int arrayLengthint defaultValue)
{
    
int[] arr = new int[arrayLength];
    for (
int i 0arrayLengthi++)
        
arr[i] = defaultValue;

    return 
arr;



תוכל להכניס מערך של שטרות שונים (או מטבעות, או כל מספר שלם אחר) :
קוד:
int[] allowedBills = { 20, 50, 100 }; Console.WriteLine(IsPossible(allowedBills, 130));

נערך לאחרונה ע"י trialusert בתאריך 20-11-2009 בשעה 04:00.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:12

הדף נוצר ב 0.06 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר