跳马问题
来源:百度知道 编辑:UC知道 时间:2024/05/29 07:02:24
在5*5格的棋盘上从点出发,
按日字跳马,
要求不重复地跳经所有方格。
求出所有跳马方案?
按日字跳马,
要求不重复地跳经所有方格。
求出所有跳马方案?
int map[12][12], status[12][12],kp;
int c[8][2]={{2,1},{2,-1},{1,2},{1,-2},
{-2,1},{-2,-1},{-1,2},{-1,-2}};
void prt(int a[][12]) /* 打印棋盘状态 */
{int i,j,i2,j2;
printf("\n");
for (i=2;i<=9;i++)
{ for (j=2;j<=9;j++) printf("%4d",a[i][j]);
printf("\n");
}
}
void status2(void) /* 计算棋盘各点条件数 */
{ int i,j,k,i2,j2,kz;
for(i=0;i<12;i++)
for(j=0;j<12;j++)
status[i][j]=100;
for(i=2;i<=9;i++)
for(j=2;j<=9;j++)
{kz=0;
for (k=0;k<=7;k++)
{i2=i+c[k][0];j2=j+c[k][1];
if (map[i2][j2]<50) kz++;
}
status[i][j]=kz;
}
prt(status);
}
void sort1(int b1[],int b2[]) /* 对8个可能的方向按条件数排序 */