Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
#1

рекурсивно расставить 8 ферзей C++ - C++

01.03.2009, 11:51. Просмотров 1661. Ответов 0
Метки нет (Все метки)

помогите пожалуйста,в рекурсии пока ноль.нужно расставить 8 ферзей на шахм доске 8*8 так,чтобы они не били друг-друга.идея такова-ставим первую ферзю в первый столбец и сразу присваиваем из этой точки по горизонтали,по вертикали и по диогоналям еденицы(массив изначально заполнен нолями).далее ставим следующюю ферзю...Я именно это и немогу записать в коде -в рекурсию еще не вьехалю
..........................................................................................................................
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<iostream>
using namespace std;
const int a=8, b=8;
int A[a][b], n = 1;
void PrintBoard();
bool HorseMove(int y, int x);
///////////////////
void main()
{
    int y=6,x=3;
    if(HorseMove(y,x))PrintBoard();
    else cout<<"err";
}
///////////////////
bool HorseMove(int y, int x)
{
  if(y<0||y>7||x<0||x>7||A[y][x]||A[y][x]==1)return false;
 
  A[y][x]=n++;
 
  if(n>8)return true;
 
  if(HorseMove(???????????????????????))return true;
 
    A[y][x]=0;
    n--;
  return false;
}
///////////////////
void PrintBoard()
{
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<b;j++)
        {
            cout<<A[i][j]<<"\t";
        }
        cout << "\n\n\n";
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2009, 11:51     рекурсивно расставить 8 ферзей C++
Посмотрите здесь:

Расставить 8 Ферзей на шахмотной доске... в борланд С C++
8 ферзей C++
Расстановка 8 ферзей C++
восемь ферзей на билдере C++
Перебор. Задача про ферзей. C++
задача n-ферзей C++
Расставить 8 ферзей на шахматной доске 8 на 8, которые не бьют друг друга C++
Рекурсивно описать функцию C(n,m) C++
Рекурсивно обчислити добуток n ≥ 2 співмножників (n парне): у = (2/1)*(2/3)*(4/3)*(4/5)*(6/5)*(6/7).Рекурсивно обчислити добуток n ≥ 2 співмножників C++
C++ Расставить на доске N ферзей так, чтобы они не били друг друга
C++ Варианты размещения восьми ферзей на шахматной доске
Реализовать алгоритм всех возможных комбинаций восьми ферзей C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru