פורסם 2010 בדצמבר 1914 שנים נתונים לנו המיספרים 1 2 3 4 צריך למצוא כמה אפשרויות יש בסה"כ אם נשתמש רק במספרים אלו כדי לקבל סכום כולל של 10מותר רק חיבור כלומר:442=102222=101234=101243=101111111111=101333=102222=103334=10השאלה היא כמה אפשרויות כאלו יש לנו בסה"כ ?
פורסם 2010 בדצמבר 1914 שנים נראה לי שהוא מתכוון לפתור את השאלה ללא שימוש בתכנית מחשב. (השאלה הופיעה באולימפיאדת מדעי המחשב)
פורסם 2010 בדצמבר 1914 שנים כי אתה יכול להסתכל על זה כעץ עם מקסימום של 4 עלים בכל שלב ועל מבנה כזה יותר קל לעבור ברקורסיה.
פורסם 2010 בדצמבר 1914 שנים f calculates possibilities for sum of n using 1,2,3,4:f(n) = f(n-1) + 1*(n mod 4 == 0) + 1*(n mod 3 == 0) + 1*(n mod 2 == 0) + 1*(10 mod 1 == 0)base: f(1) = 1then run f(10)הכוונה ב-n mod x == 0, זה תוסיף עוד 1 אם n modulo x שווה לאפס.בטח יש דרך יותר פשוטה לפתור את זה, אבל מהכפאת לי.אגב יש גם דרך יותר יעילה לפתור, וזה בעזרת תכנות דינאמי, אבל יותר מתוסבך להסביר ולרשום את זה.
פורסם 2010 בדצמבר 1914 שנים זה לא רקורסיה רגילה, לדעתי אפילו מדובר על backtracking.תגדיר משנה סטטי i שגדל עבור כל קריאה תיקנית, ותגדיר תנאי התרה מספיק טובים כדי שהרקורסיה תתיר את עצמה.
פורסם 2010 בדצמבר 2014 שנים מה backtracking?? למה זה נחוץ? הפתרון למעלה הוא ב-O(n^2), למה צריך יותר?אלא אם אתה מוצא איזה חור שאני מפספס.
פורסם 2010 בדצמבר 2014 שנים כוסאמאשך, אני יושב עכשיו חצי שעה מנסה להבין למה הקוד שלך עובד למרות שאין בו הגיון. ובסוף מסתבר שסתם במקרה זה נותן תוצאה נכונה עבור 4.f(5)= f(4)+1+0+0+0 = 9f(4)= f(3)+1+1+0+1 = 8f(3)= f(2)+1+0+1+0 = 5f(2)= f(1)+1+1+0+0 = 3f(1)= 1לעומת זאת הסכומים של הצירופים הבאים הבאים שווים 5:14412332113131311221212122111211211211211111111קצת יותר מ-9...הדרך הנכונה לפתור את זה היאf(int n){ int sum = 0; for (int i=1;(i<=4)&&(n>i);i++) sum+=f(n-i); return sum+1;}
פורסם 2010 בדצמבר 2114 שנים גם בלי חשיבות הקוד שלך לא נכון. עבור 2 יש 2 צירופים 11 ו-2 ולפי הקוד שלך יש 3 צירופים.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.