0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
|
||||||
1 | ||||||
Добавить размеры в код "Обход конем"15.01.2013, 23:27. Показов 3049. Ответов 43
Метки нет (Все метки)
Господа,решила в новой теме попросить помощи.есть код
-размеры шахматной доски. -координаты конечного поля. как это воплотить в жизнь? Спасибо.
0
|
15.01.2013, 23:27 | |
Ответы с готовыми решениями:
43
Обход конем Обход конём Обход доски конем Обход доски конём Обход доски конем |
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
||||||
23.01.2013, 23:56 | 21 | |||||
Я тут вот чего придумал. Поскольку исходная точка одна, задача сводится к помеси алгоритма Дейкстры с волновым алгоритмом. Надо просто заполнить все возможные минимальные варианты хода коня по всем возможным клеткам, начиная с исходной. Т.е. не надо ни сложных матриц смежности, ни структур типа стек.
Простейшая реализация через рекурсию.
1
|
24.01.2013, 02:24 | 22 | |||||
вот вариант с одномерным массивом
1
|
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
|
|
24.01.2013, 03:19 [ТС] | 23 |
lemegeton, вы чудесны,код просто идеально подходит))
он все не отстанет с загрузкой размеров и координатов..можно ли с помощью printf использовать height,wigth,координаты y и x для загрузки? Добавлено через 44 секунды UserAK, спасибо и Вам,к сожалению,препод поставил строгий запрет на С++... Добавлено через 15 минут попросил загрузить с помощью scanf Добавлено через 12 минут ..эээ..через printf понятно,как это сделать,а тут..или совместно с printf делать и scanf,чтобы он просил вводить данные?уфф..помогите последний раз,я отвяжусь,любезный lemegeton?
0
|
24.01.2013, 08:24 | 24 | ||||||||||
вот через printf() и scanf()
без ссылок и new delete
если использовать макросы, то получается так:
0
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
||||||
24.01.2013, 08:25 | 25 | |||||
Да, конечно. Переменные height, width, x и y вполне можно считывать с консоли вместо инициализации константами. Все будет работать.
Вот пример ввода. Сделайте по аналогии. Обратите внимание на амперсанд перед width в scanf'е. Он очень важен.
1
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
|
24.01.2013, 08:45 | 27 |
Компилируется, выдает результат.
Падает, если нет пути до точки, попробуйте поле размером 3х3. Не по теме: Конечно, решение через стек более универсально, чем через рекурсию, но его сложнее понять.
1
|
24.01.2013, 09:12 | 28 | |||||
вот теперь не падает и пишет если нет пути, спасибо )
просто я это написал, чтобы показать как заменить шаблонный stack<int> массивом, обойтись без рекурсии и заодно использовать одномерный массив вместо матрицы. вроде получилось, ми доволен
2
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
|
24.01.2013, 09:18 | 29 |
Ага, только через код теперь не продраться без пол-банки. )
Еще надо бы от глобальных переменных отказаться.
1
|
24.01.2013, 09:31 | 30 |
что верно, то верно
это всё ради того, что бы было как можно меньше параметров всяких у функций вот даже макросов налепил Добавлено через 2 минуты сначала сделал с рекурсией, но ввёл что-то вроде 100х100 и стэк лопнул. тогда вот и решил извратиться Добавлено через 2 минуты и решил не таскать туда-сюда эту несчастную матрицу из функции в функцию, сделал глобальной, да и всё остальное заодно уж
0
|
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
|
|
24.01.2013, 18:00 [ТС] | 31 |
я так у себя и сделала,только вот значений потребовалось вводить больше,чем мне показалось нужным.value ведь тоже нужно инициализировать?
Добавлено через 2 минуты а каждый раз int писать по идее не нужно,ведь есть строка,которая относит все величины к типу int
0
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
|||||||||||
24.01.2013, 19:27 | 32 | ||||||||||
Нет-нет. У него "магическое" начальное значение 0. Не надо его вводить. Вообще, суть этого value -- минимальное количество ходов до клетки.
Вообще, я бы на вашем месте сделал функцию вроде такой:
1
|
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
|
||||||
25.01.2013, 00:19 [ТС] | 33 | |||||
Премногоуважаемый lemegeton, послала ему вот это
Добавлено через 44 секунды код вставила Ваш..чтобы инициализировал переменные с помощью scanf.или я даже это неправильно сделала?..
0
|
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
|
||||||
25.01.2013, 00:52 | 34 | |||||
Ыыы... Оно компилируется.
Много всего. Я, пожалуй, не стану даже пытаться объяснить. Вы вообще проверяете код перед тем, как отсылать? Надо проверять. Собирайте, запускайте. Мало ли, что я вам пришлю. Обфускация и стеганография -- штуки мощные.
0
|
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 49
|
|
25.01.2013, 01:12 | 36 |
lemegeton, не поверите,специальность совсем не связана с программированием,но предмет обязательный.мало того,еще в следующем семестре будет С++.Так что готовьтесь,я скоро буду )))
факультет ядерной физики,специальность связана с радиацией.лол,да?казалось бы,к чему оно нужно.
0
|
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
|
|
25.01.2013, 01:16 [ТС] | 37 |
прошу прощения,не вышла из аккаунта,сосед по комнате тоже на форуме этом сидит,свою задачку ищет))общажные дела.
0
|
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
|
|
25.01.2013, 01:22 [ТС] | 39 |
MrGluck, это мой пост,я пометила,что с чужого аккаунта просто написала))
ну знаете..с компьютером я разбираюсь отлично,но этого недостаточно видимо.мало того,что был на прошлом курсе паскаль,так еще в этом году всунули С и С++. То есть приеду я куда-нибудь с проверкой замерять загрязненность почвы,а если работы мало окажется,то где-то на дому смогу программку написать требующим..за небольшую плату.так чтоле.Мне физика гораздо интереснее.А программирование я просто уважаю.я с ним на Вы.
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
25.01.2013, 02:00 | 40 |
Катерька, захотите програмку какую-нибудь написать для подсчета своего маленького коллайдера - запрограммируете, знаний вам хватит как раз ровно для вычисления определенных функций без всей мощи ООП.
У меня в этом семестре были: политология, социология, БЖД, архитектура ЭВМ, обработка визуальной информации и ничего плохого я в этом не вижу. Пока дают знания - надо брать. А "кодить" можно и в шараге научиться. Процитирую своего социолога, который на первой лекции сказал очень мудрую вещь. "Давайте решим, для чего вам все это надо. Вы находитесь в высшем учебном заведении. Вас пичкают разной ерундой. Что вы получите при окончании университета. У вас будет как бы условно два нимба над головой. Один, тот, что поменьше, - это ваши знания в области программирования (специальности), второй нимб побольше говорит о том, что вы инженер и сможете свои знания перенести в любую сторону. Т.е. многосторонне развиты и сможете найти свою нишу в области работы."
0
|
25.01.2013, 02:00 | |
25.01.2013, 02:00 | |
Помогаю со студенческими работами здесь
40
Обход доски конем Обход доски конём Обход доски конем Обход конем шахматной доски обход шахматной доски конём Обход доски шахматным конем Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |