Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет qwerty ([info]qwerty)
@ 2010-01-24 17:11:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Задачка

Есть одномерный массив целых. В начале его расположен массив A длиной a, в конце B длиной b, а посредине не интересующий нас мусор длиной c. Требуется красивым образом переместить B в начало, за ним расположить A, причем сделав при этом не более a+b чтений и записей в массив. Судьба мусора не интересует. Файлы, посторонняя память и рекурсия категорически отсутствуют.


(Читать комментарии) - (Добавить комментарий)


[info]qwerty
2010-01-27 01:55 (ссылка)
У меня все на сложениях и вычитаниях с другим критерием завершения, но мне не нравится мой буфер на локале с флагом заполнения и разбор нескольких частных случаев перед. От флага могу избавиться хитрой проверкой, но красивее от этого не становится.

Собственно, GCD классически считается вычитаниями:
unsigned gcd(unsigned a, unsigned b) {
  if (a == 0) {
    return b;
  }
  while (b) {
    if (a > b) {
      a -= b;
    } else {
      b -= a;
    }
  }
  return a;
}

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]blue_slonopotam
2010-01-27 02:43 (ссылка)
"У автора имеется решение"

Я не про НОД, а про всю программу. Я почти уверен, что она работает так же, как и моя, но выглядит совершенно иначе.

про НОД - зачем на каждом проходе цикла выяснять, кто больше, когда первый проход может сделать именно это, а дальше оно чередуется ? у тебя на процессоре деления с остатком нет ?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2010-01-27 03:10 (ссылка)
Ну, все-таки, ты пока не предъявил программы, выполняющей не более a+b чтений и записей. Условия завершения пока разные, про мусор сказать еще ничего нельзя.

У меня нет вычисления НОД. Но подозреваю, что попутно производимые действия со сложениями и вычитаниями ему эквивалентны.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]blue_slonopotam
2010-01-27 03:13 (ссылка)
Мы с тобой быдлокодеры. Джаниторз митинг, не иначе.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2010-01-27 03:17 (ссылка)
Почему же сразу быдлокодеры? Просто в голове много заезженных паттернов застряло, они оттуда чуть что лезут. Но до TCHAR я пока не докатился, нет :)

(Ответить) (Уровень выше)


[info]tristes_tigres
2010-01-28 14:17 (ссылка)
выполняющей не более a+b чтений и записей.
См

(Ответить) (Уровень выше)


(Читать комментарии) -