You problem is nearly equivalent to finding a path between nodes in a graph. That can become very complex. A simple solution is possible if a number of assumptions are made:
Firstly, the stops are sequential - it is not possible to go backwards along an array row.
Secondly, only two busses are used.
If the number of busses is unlimited the logic below becomes unmanageable, and you have to implement a full graph traversal. If you can go backwards through the array row, that complicates the logic becasue of the need to detect loops. That can be avided by creating the reverse of each array row and adding it to the list.
Note that you will need to convert your rectangulalr array into a list of objects. Without doing that you would need to handle a jagged array, and that's more difficult than loading the list. The example uses 3 textboxes (route, start and stop) a button to start the search and a listbox to display the results.
一些名词:
array 数组
loop 循环
object 对象
load 加载
textbox 文本框
button 按钮
listbox 列表框
第一个假设,图中的车站是有序的(即,比如第0行,你从A到C后,不能再从C回到B、A)
第二个假设,只能一共坐两辆车(即,106,102,11,只能选取两个)。
如果能坐的车的数量没有限制,那么下面的逻辑就没法控制了,而且你必须做一个全图遍历(你必须判断是否遍历完了,然后终止循环,否则,就是无限循环---不停地换车)。如果没有第一个假设,那么可以回到同一行开过的站,那么情况也会变得复杂——你必须能判断出,遍历的过程中,有循环产生了(判断出后,终止。否则死循环。)当然这一点可以通过把每一行站点的反序存入列表的方式,来避免(判断一下,如果遍历过程中有字符串,已经被包含反序列表中了,那么就证明有循环)。
注意,你需要把你的正方形数组转换成对象列表。如果不这么做的话,那么你得去处理一个层次不齐的数组,那样会使得加载列表更加得困难。下面的例子使用了三个 文本框(分别代表,路线、起点和站点)、一个开始搜索按钮和一个结果列表框。
第一站是连续的 - 它是不可能的向后走一个数组行。
其次,只有两条总线的使用。
如果公共汽车的数量是不受限制的的,下面的逻辑变得不可收拾,和你要实现一个完整的图的遍历。如果你可以通过数组的行向后,复杂的逻辑,因为需要检测环路。这可以avided通过创建每个数组的行相反,将它添加到列表。
请注意,您需要将其转换成一个对象列表rectangulalr阵列。如果不这样做,你会需要处理交错数组,和超过装载清单困难。例如使用3个文本框(路线,开始追问
有点不通顺,改一下好吗?
你的问题是几乎相当于找到一个节点之间的路径图中。这可能会变得非常复杂。一个简单的解决方案是可能的,如果一些假设是:
首先,该站是顺序是不可能倒退沿阵列行。
其次,只有总线用于。
如果总线数是无限的逻辑下的无法控制,你必须实施一个完整的图的遍历。如果你能倒退通过阵列行,复杂的逻辑,因为需要检测回路。可以avided创建反向每个数组行和将它添加到列表。
请注意,您将需要转换rectangulalr数组对象的列表。不做你需要处理一个锯齿数组,这是更加困难比装载清单。该示例使用3个文本框(路线,开始和停止)按钮开始搜索和列表框显示结果。