0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 14
|
|
1 | |
Решение задачи на ветвление (2 коня и шахматная доска)11.02.2014, 12:18. Показов 5105. Ответов 17
Метки нет (Все метки)
Поле шахматной доски определяется парой натуральных чисел, каждое которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, e, f, каждое из которых не превосходит восьми. На поле (a, b) расположена белая фигура, на поле (c, d) – черная. Определить, может ли белая фигура пойти на поле (e, f), не попав при этом под удар черной фигуры. Рассмотреть вариант сочетания белой и черной фигур: конь и конь.
p.s. проходим только ветвление!
0
|
11.02.2014, 12:18 | |
Ответы с готовыми решениями:
17
Написать задачку на двумерные массивы(Шахматная доска.На ней расположены 2 черных коня и белый слон). Шахматная доска Шахматная доска шахматная доска!! |
55 / 48 / 13
Регистрация: 31.10.2013
Сообщений: 166
|
|
11.02.2014, 12:38 | 2 |
У каждого коня есть только 8 вариантов хода максимально и один минимально, я помню описывал его простым в лоб способом, но может быть и лучше. Конь может пойти на 2 клетки вверх или вниз по вертикали и на одну клетку вправо или влево по горизонтали, это первые 4 условия. и соответственно на одну клетку вверх или вниз по вертикали и две клетки влево или вправо по горизонтали. Ну и не совпавшие у обоих коней клетки куда они могут пойти будут искомыми.
1
|
5 / 5 / 2
Регистрация: 06.06.2013
Сообщений: 23
|
||||||
11.02.2014, 12:45 | 3 | |||||
мне кажется, тут задача стоит конкретнее - у нас уже есть координаты расположения коней и координаты клетки, которую надо проверить.
В такой ситуации я предлагаю вот что сделать: 1) проверяем координаты (e,f) - бьются ли они черным конем. делается это примерно так:
2) аналогично проверяем, может ли белый вообще попасть на эту клетку.
1
|
55 / 48 / 13
Регистрация: 31.10.2013
Сообщений: 166
|
|
11.02.2014, 12:55 | 4 |
Странно я понял так что если бы задача была конкретнее, то вместо a,b,c,d были бы конкретные координаты а тут буквенные обозначения говорящие о том что они могут быть какими угодными.
Хотя соглашусь ваша проверка выглядит куда лучше, чем то о чем говорил я.
0
|
Модератор
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
||||||
11.02.2014, 13:01 | 5 | |||||
Сообщение было отмечено hunter2014 как решение
Решение
есть способ по быстрее и попроще
конь ходит на две клетки в одном направлении и на одну в другом значит произведение должно быть или 2 или -2 итого
1
|
5 / 5 / 2
Регистрация: 06.06.2013
Сообщений: 23
|
|
11.02.2014, 13:02 | 6 |
Мне просто показалось, что числа a,b,...,e могут быть любыми, но они известны. Т.е. там с клавиатуры вводятся или что-то такое.
А вообще подобных задач интересных с конями огромное множество. Помню, мы их через массивы решали, а вот недавно прочитал про списки в С++, думаю, может как-то и проще можно, при помощи списков.
1
|
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 14
|
|
11.02.2014, 13:10 [ТС] | 7 |
все числа вводятся вводятся с клавиатуры и могут быть 1-8, потому что поле шахматной доски 8х8
p.s. что такое abs? Добавлено через 5 минут все числа вводятся вводятся с клавиатуры и могут быть 1-8, потому что поле шахматной доски 8х8 p.s. что такое abs?
0
|
5 / 5 / 2
Регистрация: 06.06.2013
Сообщений: 23
|
|
11.02.2014, 13:13 | 8 |
abs - функция, возвращающая модуль. От англ absolute
0
|
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 14
|
|
11.02.2014, 13:14 [ТС] | 9 |
0
|
5 / 5 / 2
Регистрация: 06.06.2013
Сообщений: 23
|
|||||||||||
11.02.2014, 13:16 | 10 | ||||||||||
Да, можно.
Предлагаю взять тогда вариант ValeryS, он действительно наиболее оптимальный. Его условие
0
|
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 14
|
|
11.02.2014, 13:26 [ТС] | 11 |
aaaaargh...
я ничего не понимаю можете популярней объяснить?
0
|
5 / 5 / 2
Регистрация: 06.06.2013
Сообщений: 23
|
|||||||||||
11.02.2014, 13:37 | 12 | ||||||||||
Сообщение было отмечено hunter2014 как решение
Решение
Сейчас попробую)
Итак, у нас есть координаты двух коней и клетки, которую нужно проверить - можно ли туда ходить конем. 1) проверяем координаты (e,f) - бьются ли они черным конем. делается это так:
2) аналогично проверяем, может ли белый вообще попасть на эту клетку. В итоге это все примерно так выглядит:
черный бьет, но белый не попадает, черный не бьет и т.д. я старался донести мысль свою) стало яснее?
1
|
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 14
|
|
11.02.2014, 13:57 [ТС] | 13 |
если кому не трудно, скиньте исходник для копипаста)
спасибо большое заранее) мне стыдно блин уже одно и то же спрашивать, но не получается понять, скиньте мне его, а там уж я сам разберусь
0
|
fofin
|
|
11.02.2014, 14:18 | 14 |
Да!!
Добавлено через 16 минут Похожая задача, помогите если не сложно 4. Поле шахматной доски определяется парой натуральных чисел, каждое которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, e, f, каждое из которых не превосходит восьми. Определить, являются ли поля (a, b) и (c, d) полями одного цвета. |
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 14
|
|
11.02.2014, 14:28 [ТС] | 15 |
Где исходник?
0
|
Модератор
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
||||||
11.02.2014, 15:04 | 16 | |||||
а что тут не понятного
конь ходит буквой "Г" две по вертикали и одну клетку по горизонтали или одну по вертикали и две по горизонтали в любом случае произведение дельт( разница между начальной и конечной точкой) даст 2 по модулю, отличатся могут знаками, влево/ вправо сходил вверх/вниз например конь стоит на клетке 1 1 нужно проверить попадает ли он на клетку 3 2 проверяем (3-1(дельта по вертикали)) * )(2-1( дельта по горизонтали )) 2*1=2 значит конь сходить на эту клетку может в результате получается два if первый проверяет может ли вообще белый конь попасть на эту клетку второй проверяет бъется ли эта клетка черным конем
1
|
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 14
|
|
11.02.2014, 15:44 [ТС] | 17 |
0
|
Модератор
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|||||||||||
11.02.2014, 16:04 | 18 | ||||||||||
дельты или должны быть равны ( диагональ)
или обе быть кратны двум или обе не кратны двум
упрощаем
2
|
11.02.2014, 16:04 | |
11.02.2014, 16:04 | |
Помогаю со студенческими работами здесь
18
Шахматная доска С++ Шахматная доска шахматная доска шахматная доска Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |