Witam. Mam przerobić problem 8 hetmanów z rekurencji na iterację . Ma ktoś pomysł jak?
będę wdzięczna za pomoc
poniżej moja rekurencja
#include <iostream>
#include <cmath>
using namespace std;
const int n=8;
int poz_y[n];
int licznik=1;
bool czy_wolne(int x, int y)
{
int i;
for (i=0;i<x;i++)
{
if (y==poz_y[i] || abs(x-i)==abs(y-poz_y[i]))
return false;
}
return true;
}
void wypisz()
{
int i;
cout << "\t\t\t" << licznik << ")\t";
for (i=0;i<n;i++)
cout << static_cast<char>('A'+i) << poz_y[i]+1 << " ";
cout << endl;
}
void hetman(int kol=0)
{
int i;
for (i=0; i<n; i++)
{
if (czy_wolne(kol,i))
{
poz_y[kol]=i;
if (kol==n-1)
{
wypisz();
licznik++;
return ;
}
hetman(kol+1);
}
}}
int main ()
{
cout << "\n\n\t\t\t\tPROBLEM OSMIU HETMANOW" ;
cout<<"\n\n\t\tszachowa konwencja zapisu ustawienia hetmanow\n\n\n";
hetman();
cout << "\nIstnieje " << licznik-1 << " mozliwosci ustawienia 8 hetmanow na szachownict tak, aby sie \nwzajemnie nie atakowaly."
<< " Wszystie te kombinacje zostaly przedstawione powyzej.\n\n";
cin.ignore();
getchar();
return 0;
}