![]() |
|
Модераторы: Alx, Fixin |
![]()
|
|
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Случайно наткнулся на этот новый и интересный раздел
Я начну с занятной задачки Дано : Массив из чисел каждое число в массиве два раза и только одно не имеет пары Например {21,7,1,4,7,9,21,43,4,43,1} число 9 присутствует один раз. 7,1,4,21,43 имеют пару. Задача: Найти одиночный элемент в одним циклом Примечания: количество елементов известно 0 тоже может быть в массиве smile вообще любое число smile Найти надо именно число, а не его позицию в массиве smile Задачка не новая, но занимательная Это для разминки |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 1 Всего: 32 |
Тут ИМХО важно, в каких пределах могут варьироваться числа и какое их количество.
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Нет, всё пофиг
|
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 1 Всего: 32 |
Ну, могу предложить такое решение: при вводе ищем назад по массиву. Если такое число уже встречалось, то стираем его (ну например вместо него пишем нуль). Иначе добавлем в массив.
Минусы решения: массив займет много памяти, и очень много времени. Наверное есть проще решение... -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
0 тоже может быть в массиве
А как мы узнаем, что такое число уже встречалось? Добавлено @ 02:04 Кстати, найти надо именно число, а не его позицию в массиве |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 1 Всего: 32 |
Млин, встречался я уже с этой задачей, только сейчас на ночь глядя что-то не думается. Завтра...
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Времени у нас навалом
|
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
А дополнительной памятью пользоватся можно? Например можно создать битовое(2 битовое) множество и добавлять в него найденные элементы. В принципе памяти на доп. структуру уйдет мало.
Добавлено @ 11:14 Я догнал Можно пробежатся по массиву и соединить все элементы XOR'ом, все двойные исчезнут. Правда работать бдует только если убираемые элементы встречаются четное количества раз, искомый элемнент всего один и встречается не четное количество раз. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
Это сообщение отредактировал(а) Akina - 5.11.2004, 11:43 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
Елки 8 минут потребовалось, а чуть было такие мудрённые структуры и фичи не нагородил
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
Sardar
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
Действительно работать будет только с целыми числами. Я предложил два решения, первое требует дополнительной памяти и расчётов, второе самое простое, но имеет ряд ограничений и условий.
[оффтоп] Не в обиду сказанно
Приходится извращатся с isMissing и isEmpty, все это во вложенных if'ах, потому как быстрых логических && и || нет, а and и or вычислят оба операндам что приводит к ошибке. Самый глючный, самый безобразный, самый не удобный, самый обьемный, самый убогий язык... Ноя говорю не о чистом VB, a o QVB, просто наболело за пару месяцев... [/оффтоп] -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Akina |
|
||||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
Sardar
Добавлено @ 14:42 Sardar
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||
|
|||||||
| Nobody |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 25.8.2003 Где: Россия, Москва Репутация: нет Всего: 16 |
Создать второй массив. Когда число встречается первых раз, записывать его в этот массив. Когда число встречается второй раз, удалять. В итоге у нас получится массив из одного элемента, который и есть искомое число. В принципе при таком подходе совершенно не важно общее количество элементов.
-------------------- |
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
Nobody да, но суть задачи - все это сделать за один цикл.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |