רשמתי את זה בזריזות מתוך
התקף רגשות נחיתות P: הרעיון הוא לולאה אחת שרצה על האלכסון(על האלכסון עצמו, כלומר (1,1) (2,2) , (3,3) עד (n,n) . בכל פעם שאנחנו מתקדמים בלולאה(ובפעם הראשונה) נבדוק האם התא מימין הוא אפס.אם לא, אז אנחנו יודעים שהשורה שלנו ובעצם גם העמודה(כי השורה והעמודה חייבים להיות בעליו אותו אינדקס) פסולים ונמשיך הלאה. אם הוא כן אפס, אז השורה שלנו חשודה כשורת אפסים. נתחיל לרוץ עליה לכיוון ימין ונבדוק כמה אפסים יש(אנחנו לא מתחילים לרוץ על כל השורה, רק על החלק שבין האלכסון לקצה הימני של המטריצה באותה שורה שבה היינו). על כל אפס שמצאנו אנחנו יודעים שהעמודה שבה אנחנו נמצאים כבר לא עמודת אחדים ולכן אפשר לפסול גם אותה וכך גם אם פתאום נמצא אחד ונחליט שגם השורה שלנו עכשיו לא טובה, נדע שלא צריך להמשיך לסרוק את כל השורות מהמקום שבו היינו אלא רק השורה שנמצאת בגובה העמודה שהגענו אליו. מספר הקידומים של הלולאות שבודקות אפסים בכל הפעמים ביחד שווה למס' הפעמים שפוסלים שורות ובגלל שיש רק n שורות לפסול, זה לא עובר את o(n(. בנוסף, אחרי שמצאנו שורת אפסים מצד ימין לנקודה, נבדוק האם מצד שמאל שורת האפסים ממשיכה(אם הגענו למצב שבו אנחנו בודקים את הצד השני , אז כבר פסלנו את כל השורות והעמודות האחרות ולכן זה דבר שיקרה רק פעם אחת ולא מפריע לסיבוכיות) ואם מצאנו שזו שורת אפסים מלאה , נבדוק אם יש גם עמודת אחדים מתאימה. אם מצאנו שהכל מתקיים, אז התא שבדקנו בהתחלה ונראה חשוד הוא התא הנכון. אם לא, ממשיכים לשורה הבאה שעדיין לא פסלנו. אני מקווה שזה יותר ברור >.> אני ממש לא חשבתי על להפוך את זה לבעיית גרפים..אבל זה גם נכון.