2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 с++ перебор с возвратом
Сообщение17.12.2012, 18:30 


05/03/12
31
БГУ РФКТ (бывш. РФЭ)
Собственно вот задача:

Получить все расстановки восьми ладей на шахматной доске, при которых
ни одна ладья не угрожает другой.

моя попытка решения:
Код:
#include<iostream>
using namespace std;
const int size = 8;
void searchpos (int [],int,int &);
bool searchrep (int [],int,int);
void main()
{
   int pos[size],i = 0,p = 0;
   searchpos(pos,p,i);
   cout << i << endl;
   system("pause");
}
void searchpos(int a[],int p,int &i)
{
   for (int j = 0;j < size;j++)
      if (searchrep(a,j,p))
      {
         a[p] = j;
         searchpos (a,p+1,i);
      }
      else
         if (p == size - 1)
            i++;
}
bool searchrep(int a[],int i,int p)
{
   for (int j = 0;j < p;j++)
      if (a[j] == i)
         return 0;
   return 1;
}


Проблема в том, что ответ выводится в семь раз больший, чем нужно. Помогите, пожалуйста, разобраться.

 Профиль  
                  
 
 Re: с++ перебор с возвратом
Сообщение17.12.2012, 18:53 
Заслуженный участник


04/05/09
4587
А сколько именно выводит?

 Профиль  
                  
 
 Re: с++ перебор с возвратом
Сообщение17.12.2012, 18:56 


05/03/12
31
БГУ РФКТ (бывш. РФЭ)
venco в сообщении #659814 писал(а):
А сколько именно выводит?


282240

-- 17.12.2012, 18:53 --

Сам разобрался. Забыл наложить условие на конец цикла перед инкриментом.

 Профиль  
                  
 
 Re: с++ перебор с возвратом
Сообщение17.12.2012, 20:10 
Заслуженный участник


27/04/09
28128

(Оффтоп)

А можно спросить, почему вы так непоследовательно на пробелах экономили и зачем вам тип bool, если вы его значения true и false не используете?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group