Обновить
13

Химик и программист.

32
Подписчики
Отправить сообщение
Если A[i] + A[j] < N, то для любого i < k < j верно что A[i] + A[k] < N
Если A[i] + A[j] > N, то для любого i < k < j верно что A[k] + A[j] > N

Из этих верных утверждений не следует (не видно, что следует), что A[i] + A[k] = N или A[k] + A[j] = N.

Интересное решение. А как доказать его правильность или это эвристика?

Решето Эратосфена является популярным способом оценки производительности компьютера.
Это когда читаешь условие задачи и понимаешь что не один готовый алгоритм не подходит

Для этого нужно знать готовые алгоритмы. А еще полезно книжки посмотреть и в сетке поискать, у коллег спросить совета.

Гениально! Но полагаете, что не нужно знать известных алгоритмов, а каждый раз придумывать свой? BTW в Вики ряд модификаций — какую Вы придумали?

Срочно куплю Асфальтовый каток. :)

«фиатные деньги — это разность множеств всех выпускаемых государством денег и тех которые обеспечены физическими ценностями».

К этому определению у меня претензий нет. Спасибо.

Phillips — солидная фмрма, но разочаровала :( Год назад закупил десяток лампочек накаливания на 60 Вт. Три сгорели при включении настольной лампы, при этом каждый раз отлетала колба. Спасибо, что падала на стол, на мягкую скатерку, и не разбивалась — не приходилось собирать осколки. Но цоколь оставался в патроне. Сделан из слишком мягкого металла, при попытках вывинтить гнется, как бумага. С сов. лампочками никогда не испытывал таких затруднений — прихватил плоскогубцами край и вывинчиваю. А тут все инструменты перепробовал — час возился. М.б. какие особые инструменты есть для таких случаев?

Не понял, как я найду пары всех чисел с этим подходом?

Попробуйте дать другое определение.
См. вики:
множество иррациональных чисел есть разность множеств вещественных и рациональных чисел
Хорошее определение должно наиболее просто описывать нечто.
Согласен. «Определение»: «Умножение — это такое арифм. дейсвие, которое не деление» описывает плохо даже для натуральных чисел.
См. вики:
Исторически умножение было впервые определено для натуральных чисел как многократное сложение[1] — чтобы умножить число a на число b, надо сложить b чисел a.

Вариант 1.


for i:=1 to n-1 do
 for j:=i+1 to n do

Вариант 2.


for i:=1 to n do
 for j:=1 to n do

Есть разница?

А какие алгоритмы Вы при этом знали? Знание одних, помогает придумывать… Много еще алгоритмов изобрели?

ИМХО хороший вопрос соискателю: о каком алгоритме хотите поговорить?
Допустим, он ответил: альфа-бета.
Говорите: ok, предположим, что я ничего об этом не знаю — объясните оновы и зачем нужен?

Я придумал много алгоритмов (недавние примеры: 1, 2, 3, 4, 5, 6). Секрет успеха: знаю многие готовые и не изобретаю велосипед.

Предстаим квадратную матрицу размером n на n. Код


for i:=1 to n-1 do
 for j:=i+1 to n do
 write(A[i,j])

напечатает ровно n2/2-n/2 элементов. При этом есть теоретики, которые скажут, что
О(n2/2-n/2)= О(n2), но мне обычно важно на практике, что код не перебирает лишние цифры.

PS Исправлюсь: совокупность из 2 чисел, м.б. названа совокупностью чисел. В этом случае надо их сложить, и если получим заданное значение, то вернуть эти числа, иначе вернуть два “пустых” значения. В этом случае можно оценить, как O(n) :)

Ужас! — Картинка очень соответствует!


есть ли у них серьезные трудности в составлении различных алгоритмов

Я не один десяток лет программирую. Алгоритм можно знать, а можно не знать. Но "составлять"? Это как? — Нпр., автор упоминает поиск в ширину и поиск в глубину, если соискатель не знает, чем один отличается от другого, то вряд ли за час собеседования сможет придумать велосипед. Упомянуто решето Эратосфена для поиска простых чисел. Его нельзя не знать. И за отведенный час не придумать.


«У вас есть совокупность целых чисел. Напишите алгоритм, который находит два числа. В сумме они должны дать заданное значение. Когда алгоритм находит пару чисел, он перестает считать и показывает найденные значения. Если такие числа не найдены, возвратите два “пустых” значения».

Я занимаюсь разработкой кода довольно долго. Если быть точным, с 1982 года. Ни в одном языке, на котором я когда-либо работал, не существует структуры данных, которая бы называлась «совокупность». Что же можно сказать о поставленной задаче?
Большинство кандидатов тут же ответят, что «совокупность» чисел — это массив. Конечно, можно решить эту задачу с помощью массива для хранения числовых значений. В этом случае трудоемкость алгоритма будет O(n^2), потому что вы будете перебирать данные экспоненциально: для каждого элемента нужно проверять оставшиеся числа. Но есть и более оптимальный способ решить поставленную задачу за O(n) время, выбрав иную структуру данных.

Если "перебирать данные экспоненциально", то трудоемкость НЕ будет O(n^2). Но откуда O(n^2)? Понятно, что a+b=b+a, следовательно вложенный цикл должен начинаться не с самого первого числа:


for i:=1 to n-1 do
 for j:=i+1 to n do
  if A[i]+A[j]=x then // x  -- заданное значение
   begin
     a := i; b = j; exit; end;
a := 0; b :=0; // два “пустых” значения

Но O(n) кажется слишком оптимистичной оценкой.

Социальные пособия — снижают мотивацию их получателей искать, как они бы могли быть полезны обществу, как бы они могли заработать. Ну и эти деньги на пособия надо у кого то отобрать, так или иначе.

ИМХО очень опасная идея.


Вот и все, — экономика взлетит как ракета.
Да, конечно поначалу такая политика не обрадует бывших пенсионеров, инвалидов, безработных и прочих нетрудоспособных. Но через некоторое время их жизнь тоже станет улучшаться, за счет общего роста экономики и благосостояния.

ИМХО экономика не взлетит как ракета. Нужно много времени, чтобы люди приспособились к новым условиям. Многие пенсионеры и инвалиды успеют вымереть в попытках приспособиться. А если даже не говорить о моральном аспекте, то чисто материально многие из них ведут дом, когда молодые деньги на жизнь зарабатывают, пенсионер в магазин сползает, обед на семью приготовит, детей из школы заберет. Кто молодую мамашку с заводского конвейера в 12 часов дня отпустит, чтобы ребенка из школы забрать? К сожалению, много детей с врожденной инвалидностью, за ними нужен постоянный присмотр. Для Вашей схемы нужно предусмотреть дополнительные детские дома и интернаты. При этом рождаемость сильно понизится. А требования к ЗП резко вырастут. Вахтеры и охранники будут в дефиците — раньше за копейки работали при пособиях, чтобы не скучно было, по Вашей схеме не будут.

Хорошо замаскировался.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность