|
|
发表于 2006-12-30 00:00:00
|
显示全部楼层
Re:一个应届毕业生的不归路。。。
想了很久,觉得第三题应该是个寻路的算法。
ZeroMemory(data, sizeof(data));
SetPath(data, 0, 0, 1);
void SetPath(int data[10][10], int x, int y, int step)
{
// 判断最终大小(这并不是必须的)
if (step > 25) return;
// 返回
if (x >= 5 || y >= 5 || x < 0 || y < 0)
{
return;
}
// 检查本身的值
if (data[x][y] == 0)
{
// 设置为当前步数
data[x][y] = step;
// 向X轴寻路
SetPath(data, x + 1, y, step + 1);
// 向Y轴寻路
SetPath(data, x , y + 1, step + 1);
// 向X轴反向寻路
SetPath(data, x, y - 1, step + 1);
// 向Y轴反向寻路
SetPath(data, x - 1, y, step + 1);
}
else
{
return ;
}
}
最终做出来是这样的结果
[23:50:1 625] 1, 2, 3, 4, 5
[23:50:1 625] 22, 23, 24, 25, 6
[23:50:1 625] 21, 20, 19, 18, 7
[23:50:1 625] 14, 15, 16, 17, 8
[23:50:1 625] 13, 12, 11, 10, 9
还是有差距,没想到它是怎么搞的。更改坐标可以导致不同的结果,但是…… |
|