krol
Newbie | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору дык так я и пробовал сделать... конечно может я что-то вообще не так делаю но все же гляньте код: #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; }
|