使用Java中的多个步骤进行转换

时间:2014-06-28 15:22:28

标签: java

如果标题有误导性,我很抱歉,但我不确定如何描述它。我试图用Java编写一个程序来转换数据,只给出一些转换因子。例如,如果我有这些转换因子:

  • 将a乘以10
  • 将a转换为b
  • 将b乘以20
  • 将b转换为c
  • 将c除以200
  • 将c转换为a

我如何编写一个将a转换为c的方法?我知道它必须首先将a转换为b然后b转换为c但我不知道如何教Java来识别这样的模式。我知道我可以直接编写if语句来检查这些,但是,我有很多这些转换,所有那些if语句看起来非常低效。还有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

您可以将此问题建模为图搜索问题。将每个abc建模到一个节点中。如果u可以转换为v,请在节点uv之间创建有向边。

使用此图表,您只需找到从xy的路径,即可找到将x转换为y的方法。您可以使用像Dijkstra算法这样的标准最短路径算法来找到这样的路径。

答案 1 :(得分:0)

您可以构建Graph。两个节点之间的每个弧都是转换。最后,您需要运行像Dijkstra's algorithm这样的算法来找到将x转换为y的最短路径。

这是一个StackOverFlow question,其答案提供了Java中的Graphs和Dijkstra算法的链接和实现。

编辑:似乎有人提出了同样的想法:)