PDA

View Full Version : مشکل در برنامه گردش اسب



hister
سه شنبه 21 آذر 1391, 16:25 عصر
درود به همه دوستان
من این برنامه رو برای گردش اسب نوشتم توش دو تا مشکل دارم
اول اینکه کدوم قسمت رو میتونم تغییر بدم تا با عمل کمتری برنامه اجرا بشه
دوم اینکه قسمتی که متغیر xmove و ymove رو معرفی کردم وقتی تغییرش میدم برنامه اجرا نمیشه !!

#include <iostream>
#include <iomanip>
using namespace std;

int safe (int x, int y, int board [8][8]);
void print (int board [8][8]);
int solve (int x, int y, int meovei, int board [8][8], int xmove[], int ymove[]);

int n = 0;

int main()
{
int board [8][8];

for (int x = 0; x < 8; x++)
for (int y = 0; y < 8; y++)
board [x][y] = -1;

int xmove [8] = {2, 1, -1, -2, -2, -1, 1, 2},
ymove [8] = {1, 2, 2, 1, -1, -2, -2, -1};

// int xmove [8] = { 2, 2, 1, 1, -1, -1, -2, -2 },
// ymove [8] = { 1, -1, 2, -2, 2, -2, 1, -1 };

board [0][0] = 0;

if (solve (0, 0, 1, board, xmove, ymove) != false)
print (board);
cout << endl << n << endl;
return 0;
}

int safe (int x, int y, int board [8][8])
{
if (x >= 0 && x < 8 && y >= 0 && y < 8 && board [x][y] == -1)
return 1;
return 0;
}

int solve (int x, int y, int movei, int board [8][8], int xmove[], int ymove[])
{
int xnext=0, ynext=0;
if (movei == 64)
return true;
n++;
for (int i = 0; i < 8; i++)
{
int newx, newy;
newx = xnext; newy = ynext;
xnext = x + xmove [i];
ynext = y + ymove [i];
if (xnext == newx)
n++;

if (safe (xnext, ynext, board))
{
board [xnext][ynext] = movei;
if (solve (xnext, ynext, movei+1, board, xmove, ymove) == true)
return true;
else
board [xnext][ynext] = -1;
}
}
return false;
}

void print (int board [8][8])
{
for (int x = 0; x < 8; x++)
{
for (int y = 0; y < 8; y++)
cout << setw(4) << board [x][y] << setw(4);
cout << endl << endl;
}
}

hister
چهارشنبه 22 آذر 1391, 14:50 عصر
کسی کمک نمیکنه ؟!