0

我一直在努力应对我的讲师提供的这个挑战。我已经编写了设置此解决方案所需的类的文件,但我不知道如何实现它,这是有问题的类,我需要添加算法。

#include "Solver.h"

int* Solver::findNumPaths(const MazeCollection& mazeCollection)
{
    int *numPaths = new int[mazeCollection.NUM_MAZES];


    return numPaths;
}

这是我们提供的问题描述。有谁知道如何实现这个或让我走上正确的轨道,谢谢!

00C,我们又需要你的帮助了。

因被挫败而愤怒的恶魔般邪恶的主谋拉塞尔·凯恩博士释放了一群重武装的松鼠来攻击 BCB,并消灭所有美丽而聪明的优秀计算机学生。

我们需要在短时间内对这种威胁做出反应,并计划对 BCB 的门厅设置部分路障。带枪的松鼠会在 [1,1] 方格进入 BCB 并冲向 [10,10] 所示的出口。

毛茸茸的啮齿动物无法通过被设置路障的广场。重要的是,松鼠嗜血是这样的,它们只会向出口移动——要么向右移动一格,要么向下移动一格。松鼠永远不会向上或向左移动,即使路障阻挡了它们的接近。

我们的研究人员需要进行大量测试,以确定路障的放置如何阻碍松鼠的移动。在每次测试中,都会设置一些方块,并且您必须确定从起点到出口的不同路径的总数(遵守上述松鼠运动模式)。

我们的一些研究人员已经听到关于递归计数算法的一些不连贯的内容,其他人关于递归和迭代之间的联系,但我敢肯定,OOC,你知道最好不要被误导性的建议分散注意力。

4

1 回答 1

0

从显而易见的开始:

int count = 0;

void countPaths( x, y ) {
  if ( x==10 && y==10 ) {
    count++;
    return;
  }
  if ( can-move-right )
    countPaths( x+1, y );
  if ( can-mopve-down )
    countPaths( x, y+1 );
}

从调用开始countPaths(0,0)

从长远来看不是最有效的,但它会起作用。然后寻找优化方法(例如,您最终会重新计算从靠近目标的正方形的路径很多 - 减少这项工作可能会产生很大的不同)。

于 2013-02-15T15:58:12.273 回答