从坐标到坐标的递归路径

时间:2010-02-09 19:15:56

标签: java recursion path point

我正在为一个类进行 java 作业,我不确定如何解决这个问题。我不希望它为我完成,但让我开始朝着正确的方向前进。我大多不确定该程序的递归部分。我不擅长编程。

  

问题:

     
    

NorthEast路径是从a获得的     通过向上移动和二维网格     对。例如,在图中     在下面,有两条路径从1.0到     0,1。第一个是(1,0),(0,0),(0,1),     第二个是(1,0),(1,1),(0,1)。     请注意,没有NorthEast路径     从(0,1)到任何其他点。也     请注意,有一个NorthEast路径     从(1,1)到(0,1)。你要写     一个程序,取一个数字(大小的     网格 - 不大于10)和a     起始位置和结束     位置和递归计算所有     “东北”路径。

  

0,0 0,1

1,0 1,1

我正在阅读prog2.dat文件

首先读取网格大小,然后读取起始坐标,然后读取坐标。例如:

5

3 0

1 3

它需要是一个文件,所以我将使用方法。如果有人可以让我开始或指导我发布已发布的类似问题,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

首先阅读Pascal's Triangle

对于给定的起始位置(x0,y0)和给定的结束位置(x1,y1),并限制自己在网格上移动北或东,最小长度路径将精确地组成(x1-x0 )以某种顺序向东步和(y1-y0)向北步进步。

答案 2 :(得分:0)

涉及递归的一个解决方案涉及找到路径上的下一个点,使您最接近目的地。一旦你有了这一点,你就可以使用相同的方法找出下一个最近的点,依此类推。当您到达目的地时,此过程(或递归)结束。

你可以尝试做这样的事情:

void getNextPoint(Point start, Point end, Path currentPath) {
    //if start == end, then you're done with the recursion
    //and you have a valid path

    //if you can move east from start to get closer to end
    //Point next = east of start
    //append next to the currentPath
    //then call getNextPoint(next, end, currentPath)

    //if you can move north from start to get closer to end
    //Point next = north of start
    //append next to currentPath
    //then call getNextPoint(next, end, currentPath)
}

我省略了很多细节,所以你可以自己想出更多,但这是使用递归的一种方法。从本质上讲,你正在建立一条道路。你必须弄清楚如何管理你的路径,但你可能需要能够推出和弹出它们。