我知道解决迷宫是Stack Overflow上经常讨论的话题。这是一个你可能感兴趣的问题。
将给出n * n矩阵形式的迷宫作为输入。每个元素都介于0-9之间。还将给出一系列数字,每个数字在0-9之间。矩阵和序列阵列的维数也是已知的。问题是找到满足给定序列的从(0,0)到(n-1,n-1)的矩阵中的所有可能路径。路径可以向下,向右或向下+向右移动。必须使用线程完成。
输入和输出格式在下面给出的示例中说明 -
实施例: Example1 http://gowthams.in/etc/1.PNG Example2 http://gowthams.in/etc/2.PNG Example3 http://gowthams.in/etc/3.PNG
每个线程可以打印其位置(i,j)或更新某种数据结构以便稍后处理。
解决此问题的最佳方法是什么?
这是一个家庭作业问题,我可以寻求帮助。我不是在寻找任何类型的代码。我只是想在正确的方向上指点一些。
谢谢!
答案 0 :(得分:3)
感谢您的确切陈述。
1)这句话似乎很令人不安:
您需要为矩阵中的每个条目创建线程 确保平行扫描。
因为这意味着对于矩阵NxN,你肯定需要创建N 2 线程,这对我来说太过分了。
然而,您的解决方案更加危险:您想要开始检查路由,并为每个检查创建一个新线程。这将创建指数数量的新线程,以便解决任务。您肯定需要某种优化:这称为动态优化:您在共享内存中存储是否可以使用单元(i,j)
来完成从idx
索引到目标单元格的序列。这样你就不必再多次解决相同的子任务了。我建议你为每个这样的任务[i,j,idx]
创建条件锁,并使用它来告诉子线程完成时依赖于它的线程。
2)多个路径对您来说不是问题:如果我正确读取了分配,您只关心这样的路径是否存在,而不是找到所有解决方案。
我没有按要求提供准确的解决方案,只是方向。这也是我倾向于帮助家庭工作者的方式。