Особенности создания программы, генерирующей все конфигурации восьми ферзей на шахматной доске из 8x8 полей. Характеристика аспектов поиска алгоритма решения. Проблемы хранения результата. Исследование основ его графического отображения в Delphi.
Аннотация к работе
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ) КАФЕДРА ТЕХНИЧЕСКИХ И ИНФОРМАЦИОННЫХ СРЕДСТВ СИСТЕМ УПРАВЛЕНИЯУмение программировать является очень важным для изучаемой специальности. При создании программ необходимо учитывать особенности их реализации на разных языках. От хорошего специалиста требуется не только знания языков программирование, но и знание оптимальных алгоритмических решений.Задача состоит в том, чтобы сделать программу, генерирующую все конфигурации восьми ферзей на шахматной доске из 8x8 полей, так, чтобы ни один ферзь не мог взять никакого другого ферзя. Как результат, мы можем заключить, что каждая горизонталь будет содержать ровно одного ферзя. b) Аналогично мы заключаем, что каждая вертикаль будет содержать ровно одного ферзя. c) Есть 15 "восходящих" диагоналей, каждая из которых содержит не более одного ферзя, т. е. 8 восходящих диагоналей содержат ровно по одному ферзю, 7 восходящих диагоналей являются пустыми. d) Аналогично заключаем, что 8 нисходящих диагоналей содержат ровно по одному ферзю, а 7 являются пустыми. e) Если задана какая-то непустая конфигурация ферзей, в которой никакие два ферзя не могут взять друг друга, то удаление любого одного из этих ферзей приведет к появлению конфигурации, сохраняющей это свойство. Если мы начинаем с какого-то решения (которое является конфигурацией восьми ферзей из множества B1) и удаляем одного ферзя, то мы получаем конфигурацию семи ферзей из множества B1; удаление еще одного ферзя приведет снова к конфигурации из множества B1, и мы можем продолжать этот процесс, пока шахматная доска не опустеет. Для каждой позиции ферзя 0 ферзь 1 будет перемещаться слева направо в горизонтали 1 - перескакивая через клетки, которые находятся под угрозой ферзя 0; - для каждой комбинированной позиции первых двух ферзей ферзь 2 перемещается по горизонтали 2 слева направо, пропуская все клетки, находящиеся под угрозой предыдущих ферзей, и т. д.Эта работа позволила автору познакомится и попробовать овладеть несколькими приемами в программировании. Один из которых имеет устоявшиеся название «обратное отслеживание». Идею обратного отслеживания можно применить к большому числу разных на первый взгляд задач.