נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: אתגר: פתור באופן הכי יעיל

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
דן אליהו
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 01 July 2010 בשעה 16:22 | IP רשוּם
ציטוט דן אליהו

להלן הקובץ:

http://www.upf.co.il/file/108767.html

אם יש לכם פתרונות טובים נא להעלות אותם..
חזרה לתחילת העמוד הצג את כרטיס החבר של דן אליהו חפש הודעות אחרות של דן אליהו בקר בדף הבית של דן אליהו
 
sking
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 07 July 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3
נשלח בתאריך: 07 July 2010 בשעה 13:18 | IP רשוּם
ציטוט sking

זה נראה כמו שיעורי בית, בדר"כ עדיף שתמיד תכתוב מה עשית ואיפה נתקעת. אבל בכל זאת מעודף זמן פתרתי לך הכל:

פתרון ל1 ו2     
קוד:

static class Tables
    {
        static public void test()
        {
            var t = getT(4);
            Console.WriteLine(printT(t));
            Console.WriteLine(nSecondDiagonal(t, 0));
            Console.WriteLine(sum(t));
        }
        static int nSecondDiagonal(int[,] t,int z) //Targil 2
        {
            int n = t.GetLength(0);
            int sum = 0;
            for (int i = 0; i < n-z; i++)
            {
                sum+=(t[n-i-1,i+z]);
            }
            return sum;
        }
        static string printT(int[,] t)
        {
            string str = "";
            for (int r = 0; r < t.GetLength(0); r++)
            {
                for (int c = 0; c < t.GetLength(1); c++)
                    str += t[r, c]+"\t";
                str += "\n";
            }
            return str;
        }
        static int[,] getT(int n)
        {
            int[,]T = new int[n,n];
            int i = 1;
            for (int r = 0; r < n; r++)
                for (int c = 0; c < n; c++)
                    T[r, c] = i++;
            return T;
        }
        static object sum(int[,] T) //Targil 1
        {
            int b = 0, d=0;
            int N = T.GetLength(0);
            for (int i = 0; i < N; i++)
            {
                b += T[0, i] + T[i,0] + T[i,N-1] + T[N-1,i];
                d += T[i,i];
            }
            b -= T[0, 0] + T[0, N-1] + T[N-1, 0] + T[N-1,N-1];//you can do it with two loops (0~N,1~N-1) and then you don't need subtract the corners
            return new { border = b, diagonal = d};
        }
    }



ב3 זה פשוט MOD ו DIV (מימין לשמאל)
עמודה = כיתה1 / עמודות + 1
שורה = כיתה1 % שורה + 1

ב4 בצורה רקורסיבית אתה יורד:
קוד:

static bool sameWay(BT t,char key='r') // 'r' = root - the first one, you can overload the method instead
        {
            if (t.v != key&&key!='r')
                return false;
            if (t.left==null&&t.right==null)
                return true;
            return (t.left!=null&&sameWay(t.left,t.v)) || (t.right!=null&&sameWay(t.right, t.v));
        }



~אין אני לוקח כל אחריות על הקוד ויש לבדוק אותו קודם~


חזרה לתחילת העמוד הצג את כרטיס החבר של sking חפש הודעות אחרות של sking
 

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

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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