לחץ ▶ Run כדי להדר ולהריץ את הקובץ. אם התוכנית תבקש קלט, תוכל להקליד אותו כאן למטה.
לכל סעיף ציינו סיבוכיות זמן וסיבוכיות מקום נוסף, בסימון Θ, כפונקציה של n.
חובה לפשט את הביטוי ככל שניתן. הניחו כי סיבוכיות הזמן והמקום של printf ו-free היא Θ(1),
וכי סיבוכיות הזמן של malloc(n) היא Θ(1) וסיבוכיות המקום שלה היא Θ(n).
הניחו כי sqrt פועלת בזמן Θ(1).
שימו לב: אין הבטחה ששלושת הסעיפים מקבלים תשובות שונות.
חשבו כל סעיף מחדש — ובפרט שימו לב לערכי חזרה של פונקציות עזר, למשתנים שמשתנים בין איטרציות,
ולמיקום של free ביחס לקריאה הרקורסיבית.
א.
void f1(int n) {
for (int i = 1; i < n; i++)
for (int j = i; j < n; j *= 2)
printf("*");
}
ב.
void f2(int n) {
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int k = 1; k < n; k *= 2)
printf("*");
}
ג.
void f3(int n) {
for (int i = 0; i < n; i++)
for (int j = 2; j < n; j = j * j)
printf("*");
}
נתון מערך arr באורך n של מספרים שלמים, הממוין בסדר לא-יורד,
ומספר שלם x. ייתכנו ערכים שליליים וערכים חוזרים.
על הפונקציה להחזיר את מספר הזוגות (i, j) המקיימים
0 ≤ i < j < n וגם arr[i] + arr[j] < x.
| קלט | פלט | הסבר |
|---|---|---|
| arr = {1,2,3,4}, n = 4, x = 5 | 2 | 1+2=3 · 1+3=4 |
| arr = {1,2,3,4}, n = 4, x = 6 | 4 | ועוד 1+4=5 · 2+3=5 |
| arr = {1,2,3,4}, n = 4, x = 3 | 0 | הסכום המינימלי הוא 3 ואינו קטן מ-3 |
| arr = {0,0,0}, n = 3, x = 1 | 3 | כל שלושת הזוגות |
n ≥ 1.i ייתן Θ(n log n) ואינו עומד בדרישה.נתונה מחרוזת s באורך n המכילה אך ורק את התווים
'a', 'b', 'c', 'd'.
תת-מחרוזת נקראת מאוזנת אם כל אחד מארבעת התווים מופיע בה מספר זוגי של פעמים (אפס נחשב זוגי).
על הפונקציה להחזיר את מספר תתי-המחרוזות המאוזנות של s.
תתי-מחרוזות במקומות שונים נספרות בנפרד.
| קלט | פלט | הסבר |
|---|---|---|
| s = "aabb" | 3 | "aa", "bb", "aabb" |
| s = "abba" | 2 | "bb", "abba" |
| s = "aaaa" | 4 | שלוש באורך 2 ואחת באורך 4 |
| s = "abcd" | 0 | אין תת-מחרוזת מאוזנת |
s, אפילו לא באופן זמני.s אינה ריקה.n) נחשב מקום Θ(1).נתונים שני מערכים של מספרים שלמים, שניהם ממוינים בסדר לא-יורד:
a באורך na ו-b באורך nb.
על הפונקציה להחזיר את גודל החיתוך של שני המערכים כרב-קבוצות — כלומר, את מספר
הזוגות שניתן להתאים בין איברי a לאיברי b כך שכל זוג מכיל ערכים שווים,
וכל איבר משתתף בזוג אחד לכל היותר.
| קלט | פלט | הסבר |
|---|---|---|
| a = {1,2,3}, b = {2,3,4} | 2 | 2 ו-3 |
| a = {1,1,2}, b = {1,2,2} | 2 | 1 אחד ו-2 אחד |
| a = {1,1,1}, b = {1} | 1 | אפשר להתאים רק פעם אחת |
| a = {2,4,6,8}, b = {1,3,5,7} | 0 | אין ערך משותף |
examT_q4 עצמה חייבת לקרוא לעצמה.main./grade.