дык так я и пробовал сделать...
конечно может я что-то вообще не так делаю но все же гляньте код:
#include <iostream.h>
const int n=8,m=8;
int npol=0,vilet=0;
int cord[n][2];
int *hmicord;
void vibmest(int*,int*);
void printBoard(int[][n]);
void hod(int*,int*);
void main()
{
int pole[n][n],currentRow=0,currentColumn=0,startRow=0, startColumn=0;
for(int a=0;a<n;a++)
{
for(int s=0;s<n;s++)
{
pole[a][s]=0;
}
}
cout<<"Vvedite nachalnie koordinati konya ";
cin>>startRow
>>startColumn;
pole[currentRow][currentColumn]=1;
printBoard(pole);
for(int i=1;i<n*n;i++)
{
hod(&startRow,&startColumn);
vibmest(&startRow,&startColumn);
// bool flag=true;
// hod(pole,moveNumber,horizontal,vertical,¤tRow,¤tColumn,&startRow,&startColumn,&flag);
pole[startRow][startColumn]=i+1;
// if(flag==false)
// {
// cout<<"Kon do konca ne dosol! A }|{alb!
\n";
// break;
// }
// startRow=currentRow;
// startColumn=currentColumn;
printBoard(pole);
}
printBoard(pole);
cin>>startRow;
}
/*
void hod2(int pole[n][n],int moveNumber, int horizontal[m],int vertical[m],int *currentRw,int *currentCl,int *startR,int *startC,bool *flag)
{
*currentRw =*startR + horizontal[moveNumber];
*currentCl =*startC + vertical[moveNumber];
if(*currentRw<0||*currentRw>=n||*currentCl<0||*currentCl>=n)
hod(pole,moveNumber+1,horizontal,vertical,currentRw,currentCl,startR,startC,flag);
if(moveNumber==m)
moveNumber=0;
if(pole[*currentRw][*currentCl]!=0)
{
vilet++;
hod(pole,moveNumber+1,horizontal,vertical,currentRw,currentCl,startR,startC,flag);
}
if(vilet>=7)
*flag=false;
}
*/
void printBoard(int pboard[][n])
{
cout<<npol<<"________________\n";
for(int a=0;a<n;a++)
{
for(int s=0;s<n;s++)
{
if(pboard[a][s]<10)
cout<<pboard[a][s]<<" |";
else
cout<<pboard[a][s]<<"|";
}
cout<<"\n";
}
cout<<npol<<"________________\n";
npol++;
}
void hod(int *startR,int *startC)
{
int currentCl,currentRw,
horizontal[8]={2,1,-1,-2,-2,-1,1,2},
vertical[8]={-1,-2,-2,-1,1,2,2,1};
int count=0;
for(int c=0;c<m;c++)
{
currentRw =*startR + horizontal[c];
currentCl =*startC + vertical[c];
if(currentRw>=0&¤tCl>=0&¤tRw<=n&¤tCl<=n)
{
cord[count][1]=currentRw;
cord[count][2]=currentCl;
++count;
}
}
hmicord=&count;
}
void vibmest(int* moveRw,int *moveCl)
{
int *vibor=new int[*hmicord];
int prior[n][n]={{2,3,4,4,4,4,3,2},
{3,4,6,6,6,6,4,3},
{4,6,8,8,8,8,6,4},
{4,6,8,8,8,8,6,4},
{4,6,8,8,8,8,6,4},
{4,6,8,8,8,8,6,4},
{3,4,6,6,6,6,4,3},
{2,3,4,4,4,4,3,2}};
for(int co=0;co<=*hmicord;co++)
{
vibor[co]=prior[cord[co][1]][cord[co][2]];
cout<<vibor[co]<<"\n";
}
int min=vibor[0],number=0;
for(int cv=1;cv<*hmicord;cv++)
{
if(min>vibor[cv])
{
min=vibor[cv];
number=cv;
}
}
*moveRw=cord[number][1];
*moveCl=cord[number][2];
delete[] vibor;
}