Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2013, 16:05   #1
ba1
Новичок
Джуниор
 
Регистрация: 29.12.2013
Сообщений: 1
По умолчанию Объясните код (задача о восьми ферзях)

Нужно расписать код, каждую строчку, что делает та или иная функция в данной программе и тд. Очень срочно, буду очень благодарен.

Код:
#include <iostream>
using namespace std;

int board[8][8];

void setQueen(int i, int j)
{
  for (int x = 0; x < 8; ++x)
  {
    ++board[x][j];
    ++board[i][x];
    int foo;
    foo = j - i + x;
    if (foo >= 0 && foo < 8)
      ++board[x][foo];
    foo = j + i - x;
    if (foo >= 0 && foo < 8)
      ++board[x][foo];
  }
  board[i][j] = -1;
}

void resetQueen(int i, int j)
{
  for (int x = 0; x < 8; ++x)
  {
    --board[x][j];
    --board[i][x];
    int foo;
    foo = j - i + x;
    if (foo >= 0 && foo < 8)
      --board[x][foo];
    foo = j + i - x;
    if (foo >= 0 && foo < 8)
      --board[x][foo];
  }
  board[i][j] = 0;
}

bool tryQueen(int i)
{
  bool result = false;
  for (int j = 0; j < 8; ++j)
  {
    if (board[i][j] == 0)
    {
      setQueen(i, j);
      if (i == 7)
        result = true;
      else
      {
        if (!(result = tryQueen(i + 1)))
          resetQueen(i, j);
      }
    }
    if (result)
      break;
  }
  return result;
}

int main()
{
  for (int i = 0; i < 8; ++i)
    for (int j = 0; j < 8; ++j)
      board[i][j] = 0;
  tryQueen(0);
  for (int i = 0; i < 8; ++i)
  {
    for (int j = 0; j < 8; ++j)
    {
      if (board[i][j] == -1)
        cout << "[]";
      else
        cout << ". ";
    }
    cout << endl;
  }
}

Последний раз редактировалось ACE Valery; 29.12.2013 в 17:28.
ba1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о 8 ферзях Morfik1 Паскаль, Turbo Pascal, PascalABC.NET 4 03.06.2013 07:59
Шахматная головоломка о восьми Ферзях ( Turbo Pascal ) krolik_21 Помощь студентам 7 31.03.2013 11:50
Задача о ферзях. FCShadow Помощь студентам 0 04.06.2011 23:56
Объясните задачу Delphi. Задача сделана только код я не понимаю!! LudaBojar Помощь студентам 0 21.03.2011 20:30
Задача о восьми ферзях на Nemerle natalya_57 Помощь студентам 3 08.07.2010 11:36