问题描述:
独立钻石跳棋问题。在下图中,33个方格顶点摆放着32枚棋子,仅中央的顶点空着未摆放棋子。
下棋的规则是任一棋子可以沿水平或成垂直方向跳过与其相邻的棋子,进入空着的顶点并吃掉被跳过的棋子。
试设计一个算法找出一种下棋方法,使得最终棋盘上只剩下一个棋子在棋盘中央。
0------------------------->x
| 01 2 3456
| * * * 0
| * * * 1
| * * * * * * * 2
| * * * . * * * 3 |
| * * * 5
| * * * 6
int i,j,x,y,xv,yv,count,gboard,board[7][7],gmoves[100][100];
void init()//初始化 有子为1,否则为0,棋盘外为2
{
for( i=0;i<7;i++)
for(j=0;j<7;j++)
if((i<2||i>4)&&(j<2||j>4)) board[i][j]=2;
else board[i][j]=1;
board[3