| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Задача о Ферзе |
| Автор: SoWa 22.12.2005, 19:12 |
| Задача: Расставить на доска 8*8 восемь ферзей так, чтобы они не били друг друга. Напомню, что ферзь ходит по горизонтали, вертикали, диагонали без ограничения на количество проходимых клеток. |
| Автор: mvdr 22.12.2005, 19:19 |
| двумерный массив 8х8. Берм одного ферщя, ставим его на поле A[i,j], т.е. приваиваем этой ячейке допустим "1", и полям которые находятся под боем - "0". Если все поля уже под боем, а ферзи еще остались - то сначала |
| Автор: SoWa 22.12.2005, 19:24 |
| Пробовал. Безнадега! Если в компе: перебор просто ОГРОМЕН!!! А на бумажке даже не пробовал. В смысле пытался какую нибудь зависимость найти, не выходит... |
| Автор: DemoCode 22.12.2005, 19:29 |
| Вот алгоритм: http://www.codenet.ru/progr/alg/ferzi.php |
| Автор: SoWa 22.12.2005, 19:43 |
| Классно! Спасибо! Сейчас займусь переводом кода... |
| Автор: Rick 22.12.2005, 20:59 | ||
взято где-то здесь http://algolist.manual.ru/ |
| Автор: Akina 22.12.2005, 22:56 | ||
Нет. Казалось бы, вариантов 64!/(8!*(64-8)!) = 178462987637760. Но это не так. Достаточно вспомнить как бьет ферзь, и немедленно вылезает, что на каждой горизонтали - только один ферзь, и на каждой вертикали - один. Число вариантов сократилось до 8! = 40320. Это уже компу - раз плюнуть. А если учесть что ферзь (при расстановке с верхней горизонтали вниз) отнимает у того, что горизонталью ниже, минимум еще 1 клетку, а то и 2, число вариантов сокращается до 8*6! = 5760. Это уже просто смешная цифирь. Особенно с учетом того что это ВЕРХНЯЯ оценка. |
| Автор: mvdr 23.12.2005, 20:29 | ||
я на 1 курсе ради спора с преподом взялся за такое... сначала на бумаге перепробовал, потом понял что там симметрии дофига, потом уже програму писал. Так она по моему до сих пор в методичке по Паскалю стоит |