Алгоритм решения задачи следующий. Доска - двумерный массив 8x8 байтов. Определяемся, например, так: 0 - клетка пуста, 1 - клетка занята слоном, 2 - клетка занята ладьей, 3 - клетка под боем слона, 4 - клетка под боем ладьи, 5 - клетка под боем обоих фигур. Далем две функции с входными параметрами - (доска, i, j), возвращающие также доску. Первая ставит на доску в клетку [i,j] слона а также забивает все клетки, в которые может срубить слон соотв. значениями (3, а если значение 2 - ладья бьет, то 5). Вторая делает то же самое, но для ладьи. Создается глобальная переменная, что-то вроде BestCount, в которую будет заноситься ответ. Теперь с рекурсией. Ее входные параметры: экземпляр доски, номер строки доски и count. В рекурсии идет цикл от 1 до 8 (идем по текущей строке доски). Если значение клетки = 0 (пусто) или 3 (под боем слона), то вызываем функцию вставки слона в эту клетку и вызываем рекрсию с параметрами: получившаяся доска, номер строки + 1, count + 1. Если значение клетки = 0 (пусто) или 2 (под боем ладьи), то вызываем функцию вставки ладьи в эту клетку и вызываем рекрсию с параметрами: получившаяся доска, номер строки + 1, count + 1. Вызов рекурсии происходит в цикле, без break'а. Если номер строки > 8 то если count > BestCount то BestCount := count и выход из рекурсии (это в самом начале функции).
после сообщения о тупости задачи не ожидал более тупого ответа, принимая во внимание то, что решение я привел.
ZaCo, я говорил о тупости условия задачи. А то, что решение ты привел, эт не значит что оно единственное
2Joker-jar в смысле не единственное? ты привел, если и решение, то не той задачи. более того, твой алгоритм не решает даже проблемы связанной с твоим условием, не относящегося к этому топику.
Какой тред нашел случайно... Прям в шоке.. ИМХО X******* **yyyyyy *y*yyyyy *yy*yyyy *yyy*yyy *yyyy*yy *yyyyy*y *yyyyyy* Никто никого не бьет из друг друга, хотя бы по одному есть, кто есть кто насрать. Если нельзя чтобы вообще никто никого бил, то 8 на непересекающихся линиях. Хз че такая полемика... гы. Как запрограммировать незнаю - в фотошопе или пеинте ИМХО. П.С. Ответ-то есть какой-нибудь уже?
в двух постах этой темы же написал, что тогда смысл у задачи теряется, точнее программистский. чем вам моя реализация-то (выводит даже !позиции! слонов и ладей) не нравится? хотя тут интересен исключительно момент оптимизации алгоритма..
а если перед return rm вставить // -------------- kusok dlia togo chtob glianut chto tam za rezultaty if(rm==cnt) { if(cnt==14) { //vivod v file rezultatov predvaritelno poluchiv 14 kak rezultat if(f.Open("c:\\rez.txt",CFile::modeWrite,(CFileException *)&e)) { f.SeekToEnd(); for(i=0;i<8;i++) { f.Write("*---*---*---*---*---*---*---*---*\r\n|",36); for(j=0;j<8;j++) { f.Write(" ",1); if(A[j]>40) { f.Write((char *)&(A[j]),1); } else { f.Write(" ",1); } f.Write(" |",2); } f.Write("\r\n",2); } f.Write("*---*---*---*---*---*---*---*---*\r\n",35); f.Close(); } } } то все 14-ти значные результаты вывалятся в файл