Задача Гаусса о ферзях
Автор: hamuro • Февраль 7, 2019 • Лабораторная работа • 821 Слов (4 Страниц) • 376 Просмотры
`Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Комсомольский-на-Амуре государственный
университет»
Факультет компьютерных технологий
Кафедра «МОПЭВМ»
Отчет
к лабораторной работе №2
Студент группы 5ВТб-1 К.А. Семенищев
Преподаватель А.А. Хусаинов
2017
Задание:
Решить задачу Гаусса о ферзях с помощью нерекурсивного перебора с возвратом.
Задача Гаусса о ферзях.
Найти все расстановки восьми ферзей на шахматной доске, не угрожающих друг другу. К.Ф. Гаусс исследовал эту задачу в 1850 году
Исходный код программы:
Листинг 1.1 – Исходный код программы
#include #include using namespace std; int x[9], a[9], b[16], c[16]; void try1(int i) { int j, p, q; for (j = 1; j <= 8; j++) { if (a[j] && b[i + j - 1] && c[j - i + 8]) { x[i] = j; a[j] = b[i + j - 1] = c[j - i + 8] = 0; if (i < 8) try1(i + 1); else { for (q = 1; q <= 8; q++) { for (p = 1; p <= 8; p++) { if (x[p] == q) cout << " *"; else cout << " X"; } cout << "\n"; }; return; } a[j] = b[i + j - 1] = c[j - i + 8] = 1; } } } int main() { int i; for (i = 1; i <= 8; i++) a[i] = 1; for (i = 1; i <= 15; i++) b[i] = c[i] = 1; try1(1); system("pause"); }} |
...