Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2012, 00:26   #11
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
TinMan, ваша программа должна выдавать ошибку при k > n
Моя прога кому-то что-то задолжала?.. и не отдает?? во, зараза!.. ))
Вот протокол ее работы при некотором k>n
Код:
Running "c:\_\dropbox\pas\pf\pf12k15\pf12k15.exe "
5 8
1 3 5 4 2
5
Где и что я делаю неправильно?
New man, обрати внимание на четвертую с конца строчку в моем коде )).
Ромаха, спасибо за поддержку ). Согласен, критика должна быть более предметной (или хотя бы проверенной).
Цитата:
Хорошо, а если так :
Ром, пара слов общего характера, если ты не против..
Мой код - это просто полный перебор. Он не требует никаких "соображений в защиту", все, что ему надо - быть написанным без ошибок (на это я в данном случае надеюсь, но не гарантирую).
Если же пытаться использовать какой-то общий _алгоритм_, то прежде всего, следует привести некоторые соображения математического характера, на которых он будет основан. Типа - вот такое преобразование упрощает ситуацию, не меняя результата. После беглого ознакомления с условием я такого алгоритма придумать не смог, потому использовал рекурсию (как способ полного перебора). Возможно, тут следует делать слияние соседних грядок (как ты делаешь, Ромаха, если я правильно тебя понял). Но, как я сказал выше, это требует строгого подтверждения.
Ромаха, не отвлекайся давай, делай дело )
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 20.11.2012, 07:24   #12
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Утро доброе.

Найдем (ну хоть попытаемся найти) инвариант. На его роль подходит сумма времязатраности по выполнения дачного долга. Тоесть сумма всех значений массива t. Мы можешь делать с массивом t всё что захотим, лишь бы сумма всех его элементов не стала бы меньшей, или большей..Она должна сохранить совё изначальное значение.
Т.к. мы мы имеем право назначать только соседние грядки, то после нахождения минимума мы просто загоним значение t[min] в t[min+1] (разумеется сложив 2 значения t[min] и t[min+1])
Теперь сумма элементов массива больше ровно на t[min]. И что бы злобный инвариант не выкинул нас из цикла мы должны "выкинуть" t[min]. Как это сделать? Вернемся к вопросам реализации, ну наверное или запихнуть в другой массив, но тогда как быть в цикле? => снова перезапись элементов в массив t, или побайтовый сдвиг(или побитовый сдвиг или пошаговый, не помню).
Инвариант, остается инвариантом. Кол-во элементов массива уменьшается на 1. Но времязатратность грядкокопания остается не изменной. (Ведь тоже рекурсия )

Цитата:
как ты делаешь, Ромаха, если я правильно тебя понял
Ага-ага. Всё верно

Цитата:
Ромаха, не отвлекайся давай, делай дело )
Эх да, надо-надо возвращаться к этому циклу Штайнхауса, причем документация на него есть только на английском языке, ужас!

Последний раз редактировалось Poma][a; 20.11.2012 в 07:27.
Poma][a вне форума Ответить с цитированием
Старый 21.11.2012, 11:58   #13
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Ром, я не совсем понимаю твою тягу к инвариантам. Помимо сохранения, в них еще должен быть какой-то смысл..
Короче, вот тебе пример:
5 4
2 3 9 1 9
Минимум - 1. Эту единицу ты, видимо, объединишь с одной из девяток. И получишь ответ 10, что явно неверно..
Так? или я во что-то не врубаюсь?
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 21.11.2012, 22:11   #14
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Ром, я не совсем понимаю твою тягу к инвариантам
Не какой тяги нет, просто показалось, что тут он может помочь
Цитата:
Помимо сохранения, в них еще должен быть какой-то смысл..
Агась.
Цитата:
Короче, вот тебе пример:
Ага. Понял. Осознал. Больше не повториться.
Цитата:
Так?
Ага.
Цитата:
или я во что-то не врубаюсь?
а это уже ересь

Да-да, я напортачил. Огроменное спасибо, что нашел (фи, как не культурно) контр-пример для ей идеи.
Poma][a вне форума Ответить с цитированием
Старый 23.11.2012, 15:37   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Есть подозрение, что это частный случай задачи коммивояжера. И алгоритм точного решения - только перебор вариантов. Обосновать это предположение в приемлемое время слабо, скорее всего вообще слабо
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.11.2012 в 15:41.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
олимпиадная задача quade1992 Паскаль, Turbo Pascal, PascalABC.NET 0 17.05.2012 18:57
школьная задача(пример) vanushka Паскаль, Turbo Pascal, PascalABC.NET 9 14.11.2011 18:07
Олимпиадная задача Sanek_ntsk Помощь студентам 4 09.11.2011 23:03
Олимпиадная задача. masashama Общие вопросы C/C++ 19 27.10.2011 14:52
Школьная задача по информатике(алгоритм) Soko123 Помощь студентам 6 22.12.2010 19:13