计算骰子概率java代码_java – 查找可能的节点关于骰子值

我想编写一个递归算法,根据骰子值突出显示所有可能的节点.

我怎样才能做到这一点 ?不应该从空节点移动.

在您可以看到的图像中,我当前的节点是蓝色的,例如当骰子值为4时,我想突出显示红色位置.我写了这样的代码但不起作用提前谢谢

f(node n, dice d){

if(d == 0)

n.setDest();

if(Up node != null)

f(Up node , d-1);

if(Down node !=null)

f(Down node, d-1);

if(Right node != null)

f(Right node,d-1);

if(Left node != null)

f(Left node,d-1);

}

最佳答案 这是一个非递归的解决方案

public class Move {

private List steps;

private int stepsRemaining;

private Node lastStep;

public Move(List steps, int stepsRemaining) {

this.steps = steps;

this.stepsRemaining = stepsRemaining;

this.lastStep = steps.get(steps.size() - 1);

}

// getters and setters

}

public List getOptions(Node node, int steps) {

LinkedList stack = new LinkedList();

stack.addFirst(new Move(Arrays.asList(node), steps);

List options = new ArrayList();

while (!stack.isEmpty()) {

Move currentMove = stack.removeFirst();

Node lastStep = currentMove.lastStep;

Node[] childNodes = new Node[] { lastStep.up, lastStep.down, lastStep.left, lastStep.right };

for (Node childNode : childNodes) {

// make sure we don't go back on ourselves

if (childNode != null && !currentMove.steps.contains(childNode)) {

if (currentMove.stepsRemaining == 1) {

options.add(childNode);

continue;

}

List childSteps = new ArrayList(currentNode.steps);

childSteps.add(childNode);

stack.addFirst(new Move(childSteps, currentMove.stepsRemaining - 1));

}

}

}

return options;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值