Skoczek, proszę o wskazówkę

0

Mam problem z algorytmem rozwiązującym problem skoczka. Nie wiem jak zapisywać miejsca gdzie skoczek już był. Myślałem, żeby zapisywać w tablicy numer skoku, ale nie wiem jak to zrealizować w mojej funkcji. Bardzo proszę o wskazówkę

#include <iostream>
#include <math.h>
using namespace std;
const int N=10;
int szachownica[N][N];
int ruchy[4]={-2, -1, 1, 2}; //ruchy skoczka
void zeruj(){  //zerowanie szachownicy
	for (int g=0; g<N; g++)
	{	for(int k=0; k<N; k++)
		{
		szachownica[g][k]=0;
		}
 	}
}

	bool mozliwe( int nw, int nk) //czy możliwy jest skok
	{
	if (nw>=N or nk>=N or nw<0 or nk<0) return false;
	if (szachownica[nw][nk]!=0) return false;
	return true;
}

bool skoczek(int w, int k, int nr, )
{   if(nr>=N*N) return true;

	for (int i=0; i<4; i++)
		for (int j=0; j<4; j++){
	{		if (abs(ruchy[i])!=abs(ruchy[j]))
			 //generowanie mozliwych ruhcow
			if (mozliwe(w+ruchy[i], w+ruchy[j])) skoczek(w+ruchy[i], w+ruchy[j], nr+1);
			else return false; 
		
	}
		
}}
int main()
{zeruj();
 cout<<	skoczek (3, 3, 1);
}
0

Dodawaj pozycje skoczka do tablicy jak się znajdzie na jakimś polu. Co prawda w C++ tablice są chyba niezmienialne w czasie rzeczywistym, ale powinno być coś takiego jak tablice dynamiczne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1