我一直在努力应对我的讲师提供的这一挑战。我编写了设置此解决方案所需类的文件,但我不知道如何实现它,这是我需要添加算法的类。
#include "Solver.h"
int* Solver::findNumPaths(const MazeCollection& mazeCollection)
{
int *numPaths = new int[mazeCollection.NUM_MAZES];
return numPaths;
}
这是我们提供的问题描述。有没有人知道如何实现这一点或让我走上正轨,谢谢!
<00> 00C,我们需要你的帮助。生气被挫败,邪恶的恶魔策划者Russello Kane博士发动了一系列重型松鼠攻击BCB并消灭所有令人愉快的美丽和智力优越的计算机学生。
我们需要在短时间内对此威胁作出反应,并计划部分阻挡BCB的门厅。持枪的松鼠将以方[1,1]进入BCB,然后冲向[10,10]所示的出口。
对于毛茸茸的啮齿动物来说,有障碍的方形无法通行。重要的是,松鼠嗜血是这样的,他们只会朝着出口移动 - 向右移动一个方格,或向下移动一个方格。松鼠永远不会向上或向左移动,即使路障挡住他们的路线。
我们的boffins需要进行大量测试,以确定路障的位置将如何阻碍松鼠的移动。在每次测试中,都会有多个方块,你必须确定从开始到出口的不同路径的总数(遵守上面提到的松鼠运动模式)。
我们听到很多棺材都在喋喋不休地谈论递归计数算法的不连贯性,其他人关于递归和迭代之间的联系,但我相信,OOC,你知道最好不要被误导性建议分心。 / p>
答案 0 :(得分: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)
。
远射不是最有效的,但它会起作用。然后寻找优化的方法(例如,你最终从靠近目标的方块重新计算路径很多 - 减少这项工作会产生很大的不同)。