101

Re: Цікаві задачі

взагалі то суть черги і стеку і тому подібне в тому, що в неї стають/добавляються коли приходять, а не тоді коли в ній є вільне місце, і виходять/обслуговуються, тоді коли є ресурси для обробки.

умовно кажучи якщо ви читаєте з черги зі швидкістю 1 елемент в хвилину, то за цю хвилину в вас можуть прийти нові елементи які потрібно поставити в кінець черги. Тобто потрібно мати переривання на запис, який буде переключати переганяючи стеки туди сюди конструкцію з читання на запис.

Подякували: Yola1

102 Востаннє редагувалося Vo_Vik (19.11.2014 19:17:20)

Re: Цікаві задачі

Дубль

103

Re: Цікаві задачі

Задача.

40 піратів ділять ящик з золотом,вони сидять в крузі.
Кожен четвертий вбиває себе і виходить з черги.

Ввести номер пірата,з якого починається черга (від 1 до 40).
Вивести номер пірата,який залишиться. Якому і дістанеться золото :).

Завдання виконати без бд та файлів.

104 Востаннє редагувалося koala (20.11.2014 10:49:26)

Re: Цікаві задачі

http://uk.wikipedia.org/wiki/Задача_Йосифа_Флавія

VTrim написав:

Завдання виконати без бд та файлів.

Як на мене, цікавіше тут - як використати бд чи файли для обчислення цієї формули...

Подякували: quez1

105

Re: Цікаві задачі

Vtrim
Красти в Йосипа Флавія і Кнута завдання некрасиво. Ви тепер для мене гірше за Пугачову і Кобзона разом узятих.

106

Re: Цікаві задачі

0xDADA11C7 написав:

Vtrim
Красти в Йосипа Флавія і Кнута завдання некрасиво. Ви тепер для мене гірше за Пугачову і Кобзона разом узятих.

Ви так написали,наче я вкрав чийсь код і видав за свій. P.s побачив цю задачу на одному з ру форумів,переклав сюди,тому ні про яких Флавіів та Кнутів і близько не чув:)

107

Re: Цікаві задачі

Vo_Vik написав:

взагалі то суть черги і стеку і тому подібне в тому, що в неї стають/добавляються коли приходять, а не тоді коли в ній є вільне місце, і виходять/обслуговуються, тоді коли є ресурси для обробки.

умовно кажучи якщо ви читаєте з черги зі швидкістю 1 елемент в хвилину, то за цю хвилину в вас можуть прийти нові елементи які потрібно поставити в кінець черги. Тобто потрібно мати переривання на запис, який буде переключати переганяючи стеки туди сюди конструкцію з читання на запис.

Не зрозумів як це пов'язано з тим, щоб не повертати елементи до першого стеку. Наведіть use-case коли відбувається помилка.

108

Re: Цікаві задачі

хм...
Я напевно не правильно зрозумів ваше перше повідомлення, Тобто ви пропонуєте використовувати перий стек як буфер запису, другий стек як буфер читання. Коли буфер читання порожній, то переганяємо в нього весь буфер запису, так?
Так напевно буде працювати. Я чогось був зациклився на думці, що всю чергу треба тримати в одному місці.

Подякували: koala, Yola2

109

Re: Цікаві задачі

VTrim,
потренуйтесь на менших цифрах.
візьмем 5 і кожен 3-й
1234512452424
6 І 3
1234561245125151

110

Re: Цікаві задачі

Введіть у стек послідовність символів.Вилучіть з цієї послідовності всі літери "а".

111 Востаннє редагувалося muroclav (28.11.2014 19:50:01)

Re: Цікаві задачі

ihor102 написав:

Введіть у стек послідовність символів.Вилучіть з цієї послідовності всі літери "а".

Чому ви серед цих трьох задач

Прихований текст
ihor102 написав:

Це лабораторна з об'єктно-орієнтовного програмування.
Одне з цих завдань зробіть будь ласка
1.Написати програму, використовуючи зв'язний список, для зберігання списку об'єктів, що містять імена студентів та їх номера соціального страхування.
2.Введіть у стек послідовність символів.Вилучіть з цієї послідовності всі літери "а".
3.Ввести послідовність символів,  де "а" є ознакою закінчення введення.Вивести наведені символи на екран у зворотньому порядку. Розв'яжіть цю задачу із застосуванням черги.
Буду дуже вдячний.

Розмістили в даній темі тільки цю задачу?
чи інші задачі менш цікаві?

Подякували: koala1

112

Re: Цікаві задачі

muroclav написав:
ihor102 написав:

Введіть у стек послідовність символів.Вилучіть з цієї послідовності всі літери "а".

Чому ви серед цих трьох задач

Прихований текст
ihor102 написав:

Це лабораторна з об'єктно-орієнтовного програмування.
Одне з цих завдань зробіть будь ласка
1.Написати програму, використовуючи зв'язний список, для зберігання списку об'єктів, що містять імена студентів та їх номера соціального страхування.
2.Введіть у стек послідовність символів.Вилучіть з цієї послідовності всі літери "а".
3.Ввести послідовність символів,  де "а" є ознакою закінчення введення.Вивести наведені символи на екран у зворотньому порядку. Розв'яжіть цю задачу із застосуванням черги.
Буду дуже вдячний.

Розмістили в даній темі тільки цю задачу?
чи інші задачі менш цікаві?

Мені ця саме більше чомусь сподобалась.
два рядочки напишіть хоть як то робиться я далі вже найду як зробити.

113

Re: Цікаві задачі

ihor102 написав:

Введіть у стек послідовність символів.Вилучіть з цієї послідовності всі літери "а".

Придумайте цікаве формулювання для цієї задачі, тоді ми вам допоможемо.

114 Востаннє редагувалося koala (21.12.2014 10:16:57)

Re: Цікаві задачі

Знайти кількість цифр в числах від 1 до n зі складністю алгоритму O(1).

Прихований текст

А потім ще питають, чи потрібна програмістам математика...

Подякували: Chemist-i1

115

Re: Цікаві задачі

koala написав:

Знайти кількість цифр в числах від 1 до n зі складністю алгоритму O(n).

Я не дуже розумію, що таке "O(n)" (мабуть функція від n), але..

Ось мій варіант
int number=1234;
int i=0;
int j=1; 
while (number/j != 0)
{
    i++;
    j*=10;
}
return i;

Ideone

116 Востаннє редагувалося koala (21.12.2014 10:25:34)

Re: Цікаві задачі

В числах від 1 до 1234 ви знайшли всього 4 цифри?
І, вибачте, описався зі складністю, зараз виправлю.
Короткий лікнеп: складність O(n) означає, що зі зростанням n час роботи програми зростатиме пропорційно n (точніше, лінійно, але для великих n це несуттєво). Наприклад, якщо там є цикл до n.
Складність O(1) означає, що час роботи алгоритму константний.
Можете для простоти вважати, що на 1000 питань про числа від 1e9 до 2e9 ця програма відповість за 1с.

117 Востаннє редагувалося quez (21.12.2014 10:37:58)

Re: Цікаві задачі

O(log(n))
http://ideone.com/XeJDpB
Оце-так-так. Не встиг побити O(n), як уже треба O(1).

Подякували: Yola1

118

Re: Цікаві задачі

Ви на вірному шляху. Лишилося трохи посидіти над папером і знайти лінійну формулу для суми в циклі (знадобиться формула суми геометричної прогресії і трохи фантазії).

Подякували: Yola1

119

Re: Цікаві задачі

Треба уточнити правила гри. От пробував я крутити ось цю формулу:

s = (9 + 90*2+900*3+...+9n*10^(n-1))

Вона зводиться до такої:

s = n*10^n - число_що_складається_з_(n-1)_одиничок

Обидва доданки мають логарифмічну складність, проте перший скоріше всього законний (я сумніваюсь, що ваша формула не містить піднесення до n-ної степені), а другий — ні. В такому разі я не бачу сенсу в подальшій оптимізації.

120 Востаннє редагувалося koala (21.12.2014 13:53:42)

Re: Цікаві задачі

Якщо вважати піднесення до степеня складною операцією, то логарифм також не за один такт обчислюється. Звісно, операції FPU слід вважати за одну операцію кожну - там логарифм і піднесення в степінь по одному разу виходять.
А формула схожа, але трохи не така.