算法 - 根据前一个

时间:2015-11-24 06:27:02

标签: algorithm

寻找一种有助于根据前一个问题答案选择下一个问题的算法。例如:如果第一个问题是 你拥有一部智能手机吗? 如是 2.它有什么类型的传感器?

如果没有 你想买哪种智能手机?

这些问题的分支应基于最后一个问题并回答。   可以采用哪些技术来推导出这一点。任何通用算法都可以使用。

1 个答案:

答案 0 :(得分:0)

您必须决定是否应该提出问题。这是一种方式。我还没有提供QuestionContext,你的工作是决定如何存储答案,并根据这个问题决定问题是否可用。

我很想采用next()问题方法,但有时候你需要更多的背景(例如,如果你拥有智能手机和智能手机来自Apple,请询问正在运行的iOS版本)。

希望这有帮助!

interface Question {
  public boolean isAvailable(QuestionContext ctx);
  public void ask();
  // ... rest of the methods
}

public class Questionnaire implements QuestionContext {
  private Question[] qs;

  // constructors, getters, etc.

  public void ask() {
     for (Question q : qs) {
       if (q.isAvailable(this)) {
         q.ask();
       }
     }
  }
}

P.S。如果你需要更复杂的东西,有一些流程框架可用于各种任务,但你必须得到这个想法并提出适合你需求的东西。一个例子是Spring WebFlow,它在类似向导的页面上下文中决定下一个页面。