0 / 0 / 1
Регистрация: 03.11.2010
Сообщений: 29
|
|
1 | |
Способы решения тривиальных/не тривиальных задач13.11.2010, 01:58. Показов 2891. Ответов 20
Метки нет (Все метки)
Други! В этой теме я предлагаю выкладывать свои способы решения тривиальных/не тривиальных задач и стремиться к элегантности их решения, то бишь к совершенству кода. Это будет способствовать повышению профессионализма и навыков кодерства. Оптимизация должна быть интересной
0
|
13.11.2010, 01:58 | |
Ответы с готовыми решениями:
20
Написать программы для решения задач Составить программу для решения задач Программа для решения транспортных задач Составить программы для решения задач |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
13.11.2010, 01:59 | 2 |
Glacius, Оптимизация не всегда есть элегантность и совершенство. Ненужная оптимизация - зло
0
|
0 / 0 / 1
Регистрация: 03.11.2010
Сообщений: 29
|
|
13.11.2010, 02:01 | 3 |
Таки давайте стремиться к предельному
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
13.11.2010, 02:19 | 4 | |||||
Glacius, К предельному идиотизму? Ну начинайте, может кто-то и подтянеться.
Оптимизируйте swap двух чисел без использования третьей. Задача n-ое кол-во раз была на форуме, но с чего-то ведь надо начинать.
0
|
0 / 0 / 1
Регистрация: 03.11.2010
Сообщений: 29
|
||||||
13.11.2010, 02:34 | 5 | |||||
Вы не использовали 3-ю переменную.
Но задачу можно решить используя оператор "XOR", т.е. "^=":
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
13.11.2010, 02:42 | 6 | |||||
Glacius, Верно. А можно и
0
|
0 / 0 / 1
Регистрация: 03.11.2010
Сообщений: 29
|
|
13.11.2010, 02:52 | 7 |
Это один из вариантов. Но тема не столько для оптимизаций, сколько для мыслей и рассуждений.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
13.11.2010, 02:53 | 8 |
Glacius, Намного ли быстрее работает XOR чем сложение и вычитание на современных компьютерах?
0
|
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
13.11.2010, 04:41 | 9 |
ForEveR, ещё можно вспомнить недавнюю тему про реверс строки - там же уже это обсуждалось - даже ассемблерный код приводился...
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
13.11.2010, 10:44 | 10 |
silent_1991, Да, я помню. Ненамного быстрее все же, насколько я понимаю.
0
|
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
13.11.2010, 10:47 | 11 |
Да там вроде сошлись во мнении, что практически всегда по скорости обе реализации один в один совпадают.
0
|
0 / 0 / 1
Регистрация: 03.11.2010
Сообщений: 29
|
|
13.11.2010, 11:07 | 12 |
Имеете ввиду что тема исчерпала себя до своего создания?
0
|
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
|
|
13.11.2010, 11:42 | 13 |
Да и на не современных одинаково, только XOR в отличие от сложений и вычитаний переполнений и переходов через ноль не вызывает.
0
|
13.11.2010, 11:43 | 14 |
Ага, так как это делает компилятор C++.
Если бы на ассемблере писал человек, то можно было бы несколко тактов выиграть( в случае с XOR), просто компилятор гененрирует более общий вариант поставленной задачи, а человек будет подходить к этому как к частному случаю.
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
13.11.2010, 14:53 | 15 |
К сожалению, это не оптимизация, а с точностью до наоборот. Хотя этот код стотыщпицот раз уже приводили как "правильный пример". Так вот, это - пример того, как не надо писать. В соответствии с точным смыслом Стандарта языка, этот код приводит к неопределенному поведению программы. А неопределенное поведение, оно такое - может, ничего не произойдет, а может и "бабахнуть".....
А по скорости в сравнении с кодом Glacius - выигрыша нет. Зато код Glacius не обладает UB.
0
|
0 / 0 / 1
Регистрация: 03.11.2010
Сообщений: 29
|
|
13.11.2010, 14:56 | 16 |
0
|
13.11.2010, 15:02 | 17 |
Имелось ввиду undefined behavior. Я вот не помню, является ли "=" точкой следования? Если нет, то это UB.
Добавлено через 1 минуту Э, подумал - конечно же нет!
0
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
|
13.11.2010, 16:09 | 18 |
Где там UB? Я не понимаю.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
13.11.2010, 23:49 | 20 |
Да, и правда. Плохой пример я кинул.
0
|
13.11.2010, 23:49 | |
13.11.2010, 23:49 | |
Помогаю со студенческими работами здесь
20
Сайты для решения задач по программированию Нужна литература и примеры решения задач Метод пристрелки - способы решения Способы решения интеграла Дирихле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |