imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 25.05.2004, 15:35     # 81
joker99
Full Member
 
Аватар для joker99
 
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924

joker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форуме
Ну вообще-то это задачки для програмиста а не для математика.
Цитата:
ARTi:
можно и рекурсию устроить, да такую, чтоб с переполнением стека
Ну так у меня максимальная глубина рекурсии это M, так что переполнение стэка там не скоро будет.
Цитата:
ARTi:
Я облажался, т.к. формулы этой не помню
А я когда меня просят решить такую вещь даже не думаю есть формула или нету, а сразу пишу код.
__________________
Столько дел, что и работой занятся некогда...
joker99 вне форума  
Старый 26.05.2004, 17:36     # 82
ARTi
Guest
 
Сообщения: n/a

joker99
Цитата:
А я когда меня просят решить такую вещь даже не думаю есть формула или нету, а сразу пишу код
Видимо, это мой недостаток, потому что я всегда сначала думаю, как написать оптимальнее, и если есть несложная формула, пытаюсь ее либо вывести, либо вспомнить, а затем применить. Это замедляет работу, зато код получается... совсем другой, более того, выполняется он тоже по-другому. У меня бзик на скорости работы и минимуму потребляемых ресурсов, т.к. сам пишу под микроконтроллеры... Прошу меня извинить .
 
Старый 27.05.2004, 22:37     # 83
Dimm
Добрый фей-мод
 
Аватар для Dimm
 
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155

Dimm СуперБогDimm СуперБог
Dimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБог
Кто знает как написать класс на с++ так, что бы от него нельзя было унаследовать?
Т.е. при попытке унаследовать класс - код не компилировался.
__________________
Фотолюбительщина

Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью.
Dimm вне форума  
Старый 28.05.2004, 02:26     # 84
joker99
Full Member
 
Аватар для joker99
 
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924

joker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форуме
Так:
Код:
class UnInheritableClass
{
friend UnInheritableClass CreateUnInheritableClass();

private:
	UnInheritableClass()
	{
	
	}
};

UnInheritableClass CreateUnInheritableClass()
{
	return UnInheritableClass ();
}
От класса UnInheritableClass нельза наследовать, а создаётся он через функцию CreateUnInheritableClass()
__________________
Столько дел, что и работой занятся некогда...
joker99 вне форума  
Старый 28.05.2004, 10:27     # 85
Dimm
Добрый фей-мод
 
Аватар для Dimm
 
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155

Dimm СуперБогDimm СуперБог
Dimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБог
joker99

Во-первых, CreateUnInheritableClass() должен быть статическим - иначе его нельзя будет вызвать.

Во-вторых, хотелось бы без приват конструктора.
__________________
Фотолюбительщина

Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью.
Dimm вне форума  
Старый 29.05.2004, 00:48     # 86
joker99
Full Member
 
Аватар для joker99
 
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924

joker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форуме
Во первых CreateUnInheritableClass() не member function.

Во вторых...., сейчас подумаю
__________________
Столько дел, что и работой занятся некогда...
joker99 вне форума  
Старый 30.05.2004, 22:11     # 87
Dimm
Добрый фей-мод
 
Аватар для Dimm
 
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155

Dimm СуперБогDimm СуперБог
Dimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБог
Вот вам еще задача:
Дана матрица где большинство значений нули. Например:

Код:
2 0 0 1
0 0 3 0
0 0 1 0
0 0 5 0
Представьте её в более компактном виде.
Удачи.
__________________
Фотолюбительщина

Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью.
Dimm вне форума  
Старый 02.06.2004, 00:49     # 88
joker99
Full Member
 
Аватар для joker99
 
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924

joker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форумеjoker99 Популярный человек на этом форуме
Если нулей бо;ьше половины, то надо сохранить только не нули, с ихними индексами, т.е для твоей матрицы:

(2,0),(1,4),(3,7),(1,11),(5,15)

имеем 10 числ для 16 местной матрицы.
__________________
Столько дел, что и работой занятся некогда...
joker99 вне форума  
Старый 02.06.2004, 07:54     # 89
Dimm
Добрый фей-мод
 
Аватар для Dimm
 
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155

Dimm СуперБогDimm СуперБог
Dimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБог
joker99

совершенно верно, маэстро
__________________
Фотолюбительщина

Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью.
Dimm вне форума  
Старый 04.06.2004, 21:28     # 90
Rundll
Junior Member
 
Аватар для Rundll
 
Регистрация: 02.11.2003
Адрес: г. Таганрог
Сообщения: 63

Rundll Путь к славе только начался
А как вам такая задачка:

Задана строка, содержащая выражение вида a?b?c?f?e=zz, где ? принадлежит множеству (+,*,-,/). a,b,c,....,z - натуральные числа, zz - контрольный результат. Необходимо написать программу которая выдает все возможные выражения при вычислении которых получим число zz . Пример: 2?2=4 Вывод : 2+2=4 2*2=4

Не напрягаю, но она очень интересна по своему.
__________________
Америка, Америка - это красиво, но Россия вот где есть СИЛА!!!
Rundll вне форума  
Старый 06.06.2004, 02:15     # 91
nibl
Junior Member
 
Аватар для nibl
 
Регистрация: 14.09.2003
Адрес: тут
Сообщения: 60

nibl Известность не заставит себя ждать
Цитата:
А как вам такая задачка:

Задана строка, содержащая выражение вида a?b?c?f?e=zz, где ? принадлежит множеству (+,*,-,/). a,b,c,....,z - натуральные числа, zz - контрольный результат. Необходимо написать программу которая выдает все возможные выражения при вычислении которых получим число zz . Пример: 2?2=4 Вывод : 2+2=4 2*2=4
Напоминает рекурсивный обход лабиринта. Старо.
__________________
Часто истина ... зависит от твоей точки зрения. © Оби Ван Кеноби.
nibl вне форума  
Старый 06.06.2004, 11:38     # 92
a_ber
Newbie
 
Регистрация: 25.11.2003
Адрес: Near monitor
Сообщения: 49

a_ber Путь к славе только начался
По поводу матрицы... то решение хранить элементы с координатами, имея в целом здравое ядро, явное школярство... Хранить чтобы хранить, это извините за выражение форма "программного тихо сам с собою "

Есть два типа задач --- прямой рандомальный доступ (если реализован за О(1) то ничего более не надо) и выборка (строки/столбца, например для умножения на вектор, реже чего-либо другого)

Так вот если хранить с координатами то рандомальный доступ О(к-во элементов в матрице), выборка тоже О(к-во элементов в матрице) (тут можно малость оптимизировать это О(к-во элементов в матрице) но несильно)... т.е. если матрица велика, то даже для очень редкой, это немало и соотв. плохо...

Заметно лучше двумерный связный список: выборка строки/столбца/отдельного элемента О(к-во элементов в строке/столбце)... затраты на память: линейно по стороне плюс к-во элементов... Если величина к-во элементов в строке/столбце все еще велика заменить список скип-листом тогда доступ к элементу станет логорифмическим...
a_ber вне форума  
Старый 06.06.2004, 11:52     # 93
Dimm
Добрый фей-мод
 
Аватар для Dimm
 
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155

Dimm СуперБогDimm СуперБог
Dimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБог
a_ber

Да, но задача была в экономии места, а не в уменьшении времени выборки.
__________________
Фотолюбительщина

Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью.
Dimm вне форума  
Старый 06.06.2004, 14:32     # 94
a_ber
Newbie
 
Регистрация: 25.11.2003
Адрес: Near monitor
Сообщения: 49

a_ber Путь к славе только начался
Понимаю, но мое решение выполняя в целом (если только к-во элементов не меньше чем длина одной строки) требование по месту, дает и неплохой практический (пригодный к реальному применению) результат...
a_ber вне форума  
Старый 16.03.2005, 07:19     # 95
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Что-то темка заглохла... А мне периодически подгоняют интересные задачи. Вот вчера подкинули еще одну - пока не решил, не успокоился - не мог оторваться.

Итак. Мы имеем числовую прямую положительных чисел (т.е. >0). Среди этих чисел можно выделить такие, которые состоят из неповторяющихся цифр (например: 64183 не содержит одинаковых цифр) и составить из них новую последовательность, элементы которой упорядочены и имеют номера: число 1 - №1, 2 - №2, ..., 123 - №100, ... Задача проста как угол стола: имея номер числа из этьой последовательности, определить само число.

Есессно, можно банально решить перебором, но всего таких чисел может быть 8877690 штук - перебирающая софтинка основательно задумается... Посему, в том условии, что давали мне, стояло ограничение на время работы программы - 5 секунд. Но, могу вам сказать, на деле требуется на порядок меньше времени.

Это не конкурс - просто разминка для мозгов. Итак, господа программеры, понеслась! Жду ваших решений
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 16.03.2005, 14:51     # 96
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
сейчас нет времени проверять, но закономерность тут в принципе простая.

После цифры 10 в каждой десятке одно число выбрасываем. Значит: если нужна позиция 43,
1) из трёх десятков выкидываем по числу
2) имеем 46 (43+3) и до цифры 40 включительно всё проверено.
3) проверяем от 41 до 46 перебором, выкидываем 44
4) ответ: 47 (46+1)

С сотнями, тысячами и т.д. аналогично.
EvroStandart вне форума  
Старый 16.03.2005, 15:18     # 97
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Эээ... Не совсем въехал. Можешь продемонстрировать алгоритм на примере: число №1357 = 2305.
И кстати, сделать прогу можно вообще без перебора чисел и без определения, удовлетворяет ли оно условию (неповторяются цифры) - у тебя это присутствует в пункте 3.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 16.03.2005, 15:46     # 98
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
пример делать некогда. весь смысл в том, что двигаем цифру дальше.
Простейший пример: позиция 12. находим количество пропущеных (один пропущеный - номер 11) и прибавляем к позиции это количество. 12+1 = 13.

Можно и без переборов, но там уже выйгрыш пинимальный.
EvroStandart вне форума  
Старый 16.03.2005, 16:05     # 99
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
EvroStandart
Гыхм... Меня тоже посещали подобные идеи, но в конце концов я от них отказался - решил делать так, чтобы перебор вообще не требовался, даже для десятка значений. А насчет выигрыша - сложно сказать, нужно сравнивать программы, а я пока никак не могу въехать в твой способ (хотя, думаю, кто-то потом скажет, что въехать в мой намного сложнее )

Подожду еще - может кто что другое предложит...
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 16.03.2005, 16:56     # 100
lalexa100
Junior Member
 
Регистрация: 04.12.2002
Адрес: Москва, Кузьминки
Сообщения: 53

lalexa100 Известность не заставит себя ждать
n= №1357
-- опред кол-ва цифр
цикл
n1 = 10 0-9
n2 = 9*9 +n1 10-99
n3 = 9*9*8 +n2 100-999
n4 = 9*9*8*7 +n3 1000-9999
n5 = 9*9*8*7*6 +n3 10000-99999
определили ближ меньшее nX - мы знаем сколько цифр
m1=n-nX - сколько неповтор. чисел X цифр

определим 1 цифру (например из 5 цифр)
для 1 9*8*7*6
для 2 9*8*7*6+для 1
для 3 9*8*7*6+для 2

т.е. m1 берем по модулю 9!/5! - определили 1 цифру

для нее получили m2=m1- (9!/5!*(цифра -1)
для второй цифры (и далее немного меняя формулу)
для 1 9*8*7
для 2 9*8*7+для 1
для 3 9*8*7+для 2
для нее получили m3=m2- (9!/6!*(цифра2 -1)

Вот такой алгоритм приблизительно
__________________
В программировании главное - это пиво

Последний раз редактировалось lalexa100; 16.03.2005 в 17:00.
lalexa100 вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:48.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.