W jaki sposob stworzyć program do rozwiązania tego problemu i spisaniu ruchów? Nalezy rozpatrzec mozliwosci z kazdego pola. Myśle, ze najszybszym sposobem będzie określić, że dopóki zmienna i nie bedzie równa n x n, i wybierać losowo ruchy do miejsca o najmniejszych wartościach możliwych ruchów (jest w moim kodzie), a w przypadku braku możliwości cofnięcie sie i rozpatrzenie innej możliwości.
Mam problem w stworzeniu pętli realizacji tych skoków.
Jakieś pomysły, sugestie? Chciałbym to zrozumieć. Będę bardzo wdzięczny.
O to kod, ktory na razie wykonałem
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int n,x,y,s[10][10],skok,p,q;
//////////////////////////////////////////////////////////////////////////////
void Pokazanie_miejsc_tablicy(int x)
{
cout<< endl<< "Kolejne ideksy tablicy dwuwymiarowej"<< endl;
for(y=n-1 ; y!=-1 ; y--)
{
for(x=0 ; x!=n ; x++)
{
cout <<"("<< x<<")"<<"("<<y<<") ";
}
cout << endl;
}}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
void Ilosc_mozliwych_ruchow(int x)
{
cout << endl << "Ilosc mozliwych ruchow z danego pola" << endl;
for(y=n-1 ; y!=-1 ; y--)
{
for(x=0 ; x!=n ; x++)
{
if(x<n-2 and x>1 and y<n-2 and y>1)
{
s[x][y]=8;
}
else
{
if((x==0 and y==0) or (x==0 and y==n-1) or (x==n-1 and y==n-1) or (x==n-1 and y==0))
{
s[x][y]=2;
}
if((x==0 and y==1)or(x==0 and y==n-2)or(x==1 and y==0)or(x==1 and y==n-1)or(x==n-2 and y==0)or(x==n-1 and y==1)or(x==n-2 and y==n-1)or(x==n-1 and y==n-2))
{
s[x][y]=3;
}
if((x==0 and y>1 and y<n-2) or (x==n-1 and y>1 and y<n-2) or (x>1 and x<n-2 and y==n-1) or (x>1 and x<n-2 and y==0) or (x==1 and y==n-2) or (x==1 and y==1) or (x==n-2 and y==n-2) or (x==n-2 and y==1))
{
s[x][y]=4;
}
if((x==1 and y>1 and y<n-2) or (x==n-2 and y>1 and y<n-2) or (x>1 and x<n-2 and y==n-2) or (x>1 and x<n-2 and y==1))
{
s[x][y]=6;
}
if(n==3)
{
s[0][1]=2; s[1][1]=0; s[1][2]=2; s[1][0]=2;s[2][1]=2;
}
if(n==1 or n==2)
{
s[x][y]=0;
}
}
cout <<s[x][y]<<" ";
}
cout << endl;
}
}
//////////////////////////////////////////////////////////////////////////////
void skoki(int x)
{
switch(skok)
{
case 1:
p=p+2; q=q+1;
break;
case 2:
p=p+2; q=q-1;
break;
case 3:
p=p-2; q=q+1;
break;
case 4:
p=p-2; q=q-1;
break;
case 5:
p=p+1; q=q+2;
break;
case 6:
p=p+1; q=q-2;
break;
case 7:
p=p-1; q=q-2;
break;
case 8:
p=p-1; q=q+2;
break;
default:
x; y;
break;
}}
int main()
{
cout << "Podaj dlugosc boku szachownicy ";
cin >> n;
Pokazanie_miejsc_tablicy(x);
Ilosc_mozliwych_ruchow(x);
getchar();
cin.ignore();
return 0;
}