如果标题有误导性,我很抱歉,但我不确定如何描述它。我试图用Java编写一个程序来转换数据,只给出一些转换因子。例如,如果我有这些转换因子:
我如何编写一个将a转换为c的方法?我知道它必须首先将a转换为b然后b转换为c但我不知道如何教Java来识别这样的模式。我知道我可以直接编写if语句来检查这些,但是,我有很多这些转换,所有那些if语句看起来非常低效。还有更好的方法吗?
答案 0 :(得分:0)
您可以将此问题建模为图搜索问题。将每个a
,b
和c
建模到一个节点中。如果u
可以转换为v
,请在节点u
和v
之间创建有向边。
使用此图表,您只需找到从x
到y
的路径,即可找到将x
转换为y
的方法。您可以使用像Dijkstra算法这样的标准最短路径算法来找到这样的路径。
答案 1 :(得分:0)
您可以构建Graph。两个节点之间的每个弧都是转换。最后,您需要运行像Dijkstra's algorithm这样的算法来找到将x转换为y的最短路径。
这是一个StackOverFlow question,其答案提供了Java中的Graphs和Dijkstra算法的链接和实现。
编辑:似乎有人提出了同样的想法:)