|
krytbiwka
|
|
восемь ферзей на билдере14.01.2011, 11:56. Показов 1272. Ответов 2
Метки нет (Все метки)
Нужно переделать из консольного текста в С++ builder ( то есть с модулями, интерфейсом)
Задача о восьми ферзях: //--------------------------------------------------------------------------- #include <iostream> #include <conio.h> using namespace std; //--------------------------------------------------------------------------- #pragma hdrstop #pragma argsused //--------------------------------------------------------------------------- const int CELL_X_SIZE = 3; const int CELL_Y_SIZE = 4; const int SIZE = 8; const int DIAG = SIZE * SIZE - 1; const char SYM = '\2'; const int NEW_COL = 12; const int OLD_COL = 15; //--------------------------------------------------------------------------- int chess_field[SIZE][SIZE] = {0}; int a[SIZE] = {0}; // ãîðèçîíòàëü int b[DIAG] = {0}; // 45 äèàãîíàëü int c[DIAG] = {0}; // 135 äèàãîíàëü //--------------------------------------------------------------------------- void Init(void); void DrawBoard(); void DrawCell(int color); int Queen_Virt(int n); int Queen_Virt_optim(int n); //--------------------------------------------------------------------------- int main(int argc, char* argv[]) { int count; count = Queen_Virt_optim(SIZE); // count = Queen_Virt(SIZE); printf("\nTOTAL: %d combinations\n", count); getch(); return 0; } //--------------------------------------------------------------------------- int Queen_Virt_optim(int n) { static int count = 0; static int d1 = 0; // для подсчета под главной диагональю static int d2 = 0; // для подсчета под побочной диагональю int i = SIZE - n; for (int j = 0; j < SIZE; j++) { if ((a[j] == 0) && (b[i + j] == 0) && (c[j - i + 2] == 0)) { a[j] = 1; b[i + j] = 1; c[j - i + 2] = 1; chess_field[i][j] = 1; if(i > j) d1++; if(j > (SIZE - i - 1)) d2++; if(n > 1) Queen_Virt_optim(n - 1); else { if((d1 >= 4) && (d2 >= 4)) { DrawBoard(); printf("\n%d combination\n", ++count); // getch(); clrscr(); d1 = d2 = 0; } } a[j] = 0; b[i + j] = 0; c[j - i + 2] = 0; chess_field[i][j] = 0; } } return count; } //--------------------------------------------------------------------------- int Queen_Virt(int n) { static int count = 0; int i = SIZE - n; for (int j = 0; j < SIZE; j++) { if ((a[j] == 0) && (b[i + j] == 0) && (c[j - i + 2] == 0)) { a[j] = 1; b[i + j] = 1; c[j - i + 2] = 1; chess_field[i][j] = 1; if(n > 1) Queen_Virt(n - 1); else { DrawBoard(); printf("\n%d combination\n", ++count); // getch(); clrscr(); } a[j] = 0; b[i + j] = 0; c[j - i + 2] = 0; chess_field[i][j] = 0; } } return count; } //--------------------------------------------------------------------------- void Init(void) { clrscr(); gotoxy(1, 1); for(int i = 0; i < SIZE; i++) for (int j = 0; j < SIZE; j++) chess_field[i][j] = 0; return; } //--------------------------------------------------------------------------- void DrawBoard() { int x = wherex(); int y = wherey(); int color; for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { color = ( chess_field[i][j] ? NEW_COL : OLD_COL ); DrawCell(color); x += 3 + CELL_X_SIZE; // 1 - for gap gotoxy(x, y); } x = 1; y += 1 + CELL_Y_SIZE; // 1 - for gap gotoxy(x, y); } return; } //--------------------------------------------------------------------------- void DrawCell(int color) { int x = wherex(); int y = wherey(); textcolor(color); for (int i = 0; i < CELL_X_SIZE; i++) { for (int j = 0; j < CELL_Y_SIZE; j++) cprintf("%c", SYM); gotoxy(x, ++y); } return; } //--------------------------------------------------------------------------- |
|
| 14.01.2011, 11:56 | |
|
Ответы с готовыми решениями:
2
Восемь ферзей На шахматной доске расставить восемь ферзей
|
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
| 14.01.2011, 13:32 | |
|
вы думаете кто-то будет это за вас делать? для начала код в теги заключите
1
|
|
|
krytbiwka
|
|
| 14.01.2011, 17:58 | |
|
готов заплатить за помощь, 200 рублей
|
|
| 14.01.2011, 17:58 | |
|
Помогаю со студенческими работами здесь
3
Програма на шахматной доске расставила восемь ферзей так, чтобы каждые два из них, не находились под одним столбиком Задача про ферзей (расставить n ферзей так, чтобы они не били друг друга) Получить m расстановок 8 ферзей на шахматной доске, при которых ни один из ферзей не угрожает другому Расставить на доске максимальное число ферзей так, чтобы каждый из них нападал ровно на р ферзей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|