-
Notifications
You must be signed in to change notification settings - Fork 1
LEVEL: Циклы while, foreach, goto, повторяющие for
Romutchio edited this page Jun 10, 2019
·
1 revision
HJSON
{
name: While & Foreach
description: Описание: Задачи на разные алгоритмы и разные сложности
levels:
[
{
next_levels:
[
]
description: Циклы while, foreach
number: 0
generators:
[
{
possible_answers:
[
Θ(log({{to1}}))
Θ(√{{to1}})
Θ(1)
Θ({{to1}})
Θ({{to1}}²)
]
text:
'''
var {{loop_var1}} = 0;
while({{loop_var1}} < {{to1}})
{
var {{loop_var2}} = 0;
while({{loop_var2}} < {{to1}})
{{loop_var2}}++;
{{loop_var1}}++;
}
'''
question: Оцени временную сложность данного алгоритма:
hints:
[
∀ {{loop_var1}}: {{loop_var2}} проходит от 0 до {{to1}}
]
answer: Θ({{to1}}²)
streak: 2
}
{
possible_answers:
[
Θ(log({{to1}}))
Θ(√{{to1}})
Θ(1)
Θ({{to1}})
Θ({{to1}}²)
]
text:
'''
var {{loop_var1}} = 0;
while({{loop_var1}} < {{to1}})
{
var {{loop_var2}} = {{loop_var1}};
while({{loop_var2}} < {{to1}} && {{loop_var2}} < {{loop_var1}} + {{from1}})
{{loop_var2}}++;
{{loop_var1}} = {{loop_var2}};
}
'''
question: Оцени временную сложность данного алгоритма:
hints:
[
]
answer: Θ({{to1}})
streak: 1
}
{
possible_answers:
[
Θ(log({{to1}}))
Θ(√{{to1}})
Θ(1)
Θ({{to1}})
Θ({{to1}}²)
]
text:
'''
var {{loop_var1}} = 0;
while({{loop_var1}} < {{to1}})
{
{{loop_var2}} = {{loop_var1}};
while({{loop_var2}} < {{to1}} && {{loop_var2}} < {{loop_var1}} + {{from1}})
{{loop_var2}}++;
{{loop_var1}} = {{loop_var2}};
}
'''
question: Оцени временную сложность данного алгоритма:
hints:
[
]
answer: Θ({{to1}})
streak: 2
}
{
possible_answers:
[
Θ(log({{to1}}))
Θ(√{{to1}})
Θ(1)
Θ({{to1}})
Θ({{to1}}²)
]
text:
'''
var array = new int[{{to1}}]{...}; // {{to1}} элементов
var minIndex = 0;
var maxIndex = array.Length - 1;
while (minIndex <= maxIndex)
{
var currentIndex = (minIndex + maxIndex) / 2;
var currentElement = array[currentIndex];
if (currentElement < targetValue)
minIndex = currentIndex + 1;
else if (currentElement > targetValue)
maxIndex = currentIndex - 1;
else
return currentIndex;
}
'''
question: Оцени временную сложность данного алгоритма:
hints:
[
Вспомни сложность бинарного поиска
]
answer: Θ(log({{to1}}))
streak: 2
}
{
possible_answers:
[
Θ(log({{to1}}))
Θ(√{{to1}})
Θ(1)
Θ({{to1}})
Θ({{to1}}²)
]
text:
'''
var c = 0;
var words = new string[{{to1}}] {...} // {{to1}} слов, длины const
foreach(var word in words):
foreach(var letter in word):
if (letter == 'a'):
c++;
'''
question: Оцени временную сложность данного алгоритма:
hints:
[
Θ(const * N), где N - размер массива
]
answer: Θ({{to1}})
streak: 2
}
{
possible_answers:
[
Θ({{to1}} {{multiply}} log({{to1}}))
Θ({{to1}})
Θ({{to1}}³)
Θ({{to1}}² {{multiply}} log({{to1}}))
Θ({{to1}}²)
]
text:
'''
var list = new List<int>();
var {{loop_var1}} = 0;
var {{loop_var2}} = 0;
while({{loop_var1}} < {{to1}})
{
while({{loop_var2}} < {{loop_var1}})
{
list.Add({{loop_var1}} * {{loop_var2}}); // ← аморт. оценка Θ(1)
{{loop_var2}}++;
}
{{loop_var1}}++;
{{loop_var2}} = 0;
}
'''
question: Оцени временную сложность данного алгоритма:
hints:
[
Обрати внимание, сколько раз выполнится list.Add
]
answer: Θ({{to1}}²)
streak: 2
}
]
}
]
}