ABA


"שאלה בג'אווה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15928 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15928
CASTROMAN

דרג אמינות חבר זה
   17:03   04.06.10   
אל הפורום  
  שאלה בג'אווה  
 
   עשינו איזה שאלה בכיתה. אני אכתוב את השאלה, ואת הפתרון. עכשיו אני לא כזה מבין מה עשו בפיתרון.. למי שיש קצת זמן להסביר לי אני אודה לו מאוד.. תודה!
נתאר את בעיית מציאת "בור" במערך דו-ממדי ריבועי:

קלט: מערך דו-ממדי ריבועי בגודל n´n המלא באפסים ואחדים בלבד.

נגדיר ש- k הוא בור (sink) אם בשורה ה- k - ית כל הערכים הם 0, ובעמודה ה- k -ית כל הערכים הם 1 (חוץ מהאיבר עצמו שהוא 0).

פלט: האם קיים מספר k המהווה בור במערך? אם כן, הדפס את ערכו.

לדוגמא: במערך A 3 הוא "בור".
010110
101100
000101
000000
101100
010111


כתבו שיטה יעילה הפותרת את הבעיה.

חתימת השיטה תהיה:

public static int isSink (int mat)

השיטה תחזיר את המספר k המהווה בור במערך, אם קיים אחד כזה, ו- -1 אם לא קיים בור במערך.


public class IsSink {


public static int isSink(int mat)
{
int n = mat.length;
boolean check = new boolean;
for ( int k = 0 ; k < n ; k++ )
check = true;
for ( int k = 0 ; k < n ; k++ )
if ( check )
{
for ( int j = 0 ; j < n ; j++ )
{
if ( k != j )
check = false;
else
{
check = false;
break;
}
if ( k == j )
continue;
if ( mat == 1 )
check = false;
else
{
check = false;
break;
}
}
if ( check )
return k;
}
return -1;
}


}




                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  עושים את הרעיון הכי בסיסי שיכולים לבצע. ldan192  04.06.10 17:46 1
     תודה! CASTROMAN 04.06.10 17:50 2
         נראה שבכל פעם שיש לך צומת אתה בעצם מעדכן את המערך ldan192  04.06.10 17:57 3
  שאלה שנתקלתי בה בקורס מבנ''ת. Zippo  04.06.10 18:08 4
     הבנתי תודה.. CASTROMAN 04.06.10 18:12 5
     רעיון חמוד :) ronen333  04.06.10 19:46 6

       
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   17:46   04.06.10   
אל הפורום  
  1. עושים את הרעיון הכי בסיסי שיכולים לבצע.  
בתגובה להודעה מספר 0
 
נניח שיש n שורות ו-m עמודות.
עוברים על כל שורה (0 עד n-1),
ועבור כל עמודה (0 עד m-1).

סה"כ מקבלים צומת פיצול שזה יהיה ה-0 (ומעליו ומתחתיו צריכים להיות 1-ים ומימינו ושמאלנו 0-ים).

עבור כל התפצלות כזו בודקים מלמעלה למטה (חוץ מעצמו) אם הכל אחדים. אם לא, מדלגים הלאה.
עבור כל התפצלות כזו בודקים משמאל לימין אם הכל אפסים. אם לא, מדלגים הלאה.


בגדול יש מימושים (לא מתוחכמים) הרבה יותר יעילים, אבל כנראה רק רצו להחדיר לכם אינטואיציה.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CASTROMAN

דרג אמינות חבר זה
   17:50   04.06.10   
אל הפורום  
  2. תודה!  
בתגובה להודעה מספר 1
 
   תודה רבה..
ועוד שאלה קטנה. איך הוא מקשר בין המערך הבוליאני לבין המערך המקורי?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   17:57   04.06.10   
אל הפורום  
  3. נראה שבכל פעם שיש לך צומת אתה בעצם מעדכן את המערך  
בתגובה להודעה מספר 2
 
הבוליאני לרוחבו.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   18:08   04.06.10   
אל הפורום  
  4. שאלה שנתקלתי בה בקורס מבנ''ת.  
בתגובה להודעה מספר 0
 
שאלה 3:
http://u.cs.biu.ac.il/~asharog/89-120/ex5.pdf

בכל אופן, אני רואה שהם לא פתרו את זה בצורה יעילה.
לא התעמקתי בקוד (וממילא אני לא כ"כ יודע ג'אווה), אבל מהלולאות המקוננות שם,
זה נראה כאילו הזמן ריצה יהיה O(n^2)

אפשר לפתור את זה ב-O(n)

השיטה, היא פשוט ללכת באלכסון בכל פעם שאתה שולל שורה\עמודה.
עד שאתה מגיע לשורה האחרונה.

ברגע שמצאת עמודה\שורה חשודה (כלומר אם עמודה, אז עמודת אפסים), אתה בודק את השורה המתאימה.
אם זה בור, אחלה, אם לא, אין בור (בגלל שמצאת עמודה שלמה של אפסים...)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CASTROMAN

דרג אמינות חבר זה
   18:12   04.06.10   
אל הפורום  
  5. הבנתי תודה..  
בתגובה להודעה מספר 4
 
   אם יש למישהו איזה הצעה טובה יותר אני אשמח.. אני בינתיים מנסה לכתוב משהו שיבדוק אלכסון...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות, דרג אמינות חבר זה
   19:46   04.06.10   
אל הפורום  
  6. רעיון חמוד :)  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net