![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
-Hex- |
![]()
Сообщение
#1
|
Гость ![]() |
подскажите решение:
1. дается упорядоченный массив типа 111..11100000...000. нужно опсчитать количество единиц в нем. нет проблем сделать это с эфективностью порядка логорифм М по основанию 2 (где М-длинна всего массива). требуется сделать это с эфективностью порядка логорифм N по основанию 2 (где N-количество единиц в массиве). для простоты длинну массива можно ограничить <20. 2. дается квадратная матрица размерности N. Требуется повернуть ее на 90 градусов используя минимум памяти. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
|
Michael_Rybak |
![]()
Сообщение
#3
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата требуется сделать это с эфективностью порядка логорифм N по основанию 2 (где N-количество единиц в массиве). Сначала находишь наибольшее p такое, что a[2^p] = 1. Теперь пытаешься идти дальше с шагом 2^(p-1), уменьшая шаг в 2 раза каждый раз, когда упираешься в нолик. Цитата 2. дается квадратная матрица размерности N. Требуется повернуть ее на 90 градусов используя минимум памяти. Дополнительная память - O(1). Крутятся по отдельности,прямо на месте, четверки (x, y)->(n-y+1, x)->(n-x+1, n-y+1)->(y, n-x+1). Нумерация строк и столбцов - с единицы. |
Гость |
![]()
Сообщение
#4
|
Гость ![]() |
2volvo, Michael_Rybak
спасибо) 2Michael_Rybak не понял это - a[2^p] = 1 что такое р, что такое а? |
Michael_Rybak |
![]()
Сообщение
#5
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
a - это заданный массив, p - это число, которое надо найти циклом for. А 2^p - это 2 в степени p.
|
-Hex- |
![]()
Сообщение
#6
|
Гость ![]() |
a - это заданный массив, p - это число, которое надо найти циклом for. А 2^p - это 2 в степени p. чет не догоняю... Цитата Сначала находишь наибольшее p такое, что a[2^p] = 1. Теперь пытаешься идти дальше с шагом 2^(p-1), уменьшая шаг в 2 раза каждый раз, когда упираешься в нолик. вообще не врубаюсь.. ты пишеш что сначала надо найти индекс последней единицы(a[2^p] = 1, p max), и дальше что то с ним сделать?? но индекс последней еденици это не "сначала", это и есть требование задачи... как я его нахожу, в этом и вопрос... обьясни плиз поподробней. |
Michael_Rybak |
![]()
Сообщение
#7
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата ты пишеш что сначала надо найти индекс последней единицы(a[2^p] = 1, p max) Не последней единицы, а *наибольшей степени двойки* такой, что в этом месте стоит единица. Цитата обьясни плиз поподробней. Проще всего объяснить кодом: p := 0; |
Michael_Rybak |
![]()
Сообщение
#8
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Косячек небольшой: после step := 1 shl p; надо вставить строку "p := 1 shl p"
|
-Hex- |
![]()
Сообщение
#9
|
Гость ![]() |
О! пасиб)
что то уже прояснилось, только вот оператор shl мы еще не проходили, можеш переписать код без него? |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Ну возьми, и перепиши... Shl - это возведение 2-ки в соответствующую степень... Замени его простым циклом, в котором происходит умножение на 2...
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 3:02 |