小编Ala*_*_AI的帖子

如何计算网格中两点之间的最短路径

我知道有很多算法可用于计算图形或网格中两点之间的最短路径,如广度优先,全对(Floyd's),Dijkstra's.

但是,正如我所注意到的,所有这些算法都计算出该图或网格中的所有路径,而不仅仅是我们感兴趣的两点之间的路径.

我的问题是: 如果我有一个网格,即一个二维数组,我有兴趣计算两点之间的最短路径,比如P1和P2,如果我可以在网格上移动的方式有限制(例如,只对角,或只对角和向上等),什么算法可以计算这个?

请注意,如果您有答案,我希望您发布算法的名称而不是算法本身(当然,如果您也发布算法,则更好); 例如,无论是Dijkstra的算法,还是Floyd的算法,或者其他什么.

请帮助我,我几个月来一直在考虑这个问题!


好吧我们在TOPCODER.COM上发现这个算法在网格中你只能移动(对角线和向上)但我无法理解这是什么算法,任何人都知道?

#include<iostream>
#include <cmath>

using namespace std;




inline int Calc(int x,int y)

{



if(abs(x)>=abs(y)) return abs(x);
int z=(abs(x)+abs(y))/2;
return z+abs(abs(x)-z);
 }

class SliverDistance
{


    public:
int minSteps(int x1,int y1, int x2, int y2)
{
    int ret=0;
    if(((x1+y1)&1)!=((x2+y2)&1))y1++,ret++;
    return ret+Calc(x2-x1,y2-y1);
}
};
Run Code Online (Sandbox Code Playgroud)

algorithm shortest-path

33
推荐指数
3
解决办法
9万
查看次数

使用ios :: binary或ios :: out或两者打开文件有什么区别?

我试图找出打开文件之间的区别,如:

fstream *fileName*("FILE.dat",ios::binary);
Run Code Online (Sandbox Code Playgroud)

要么

fstream *fileName*("FILE.dat",ios::out);
Run Code Online (Sandbox Code Playgroud)

要么

fstream *fileName*("FILE.dat",ios::binary | ios::out);
Run Code Online (Sandbox Code Playgroud)

我发现,所有这些形式是相同的:在所有情况下,即使用产生该文件上的相同的输出*fileName*<<*fileName*.write().

c++ fstream

18
推荐指数
2
解决办法
2万
查看次数

MATLAB比SCILAB有什么优势,反之亦然?

我是一名计算机系统工程本科生,我只是想知道MATLAB与SCILAB相比有什么优势,反之亦然,而SCILAB是免费软件.我的意思是从计算机工程师的角度来看.

谢谢

matlab scilab

12
推荐指数
3
解决办法
7026
查看次数

nthy中的轴心胜者全能的pythonic方式

我想知道什么是最简洁和pythonic的方法,只保留2D numpy数组的每一行中的最大元素,同时将所有其他元素设置为零.例:

给出以下numpy数组:

a = [ [1, 8, 3 ,6],
      [5, 5, 60, 1],
      [63,9, 9, 23] ]
Run Code Online (Sandbox Code Playgroud)

我希望答案是:

b = [ [0, 8, 0, 0],
      [0, 0, 60, 0],
      [63,0, 0, 0 ] ]
Run Code Online (Sandbox Code Playgroud)

我可以想到几种方法来解决这个问题,但我感兴趣的是,是否有python函数可以很快解决这个问题

先感谢您

python numpy

9
推荐指数
1
解决办法
323
查看次数

C++:字符串流提供什么好处?

任何人都可以告诉我在c ++中使用字符串流的一些实际例子,即使用流插入和流提取操作符输入和输出到字符串流?

c++ string stringstream

6
推荐指数
1
解决办法
5496
查看次数

在C++文件中:作为ios :: binary打开的文件与以ios :: binary |打开的文件不同 IOS ::出来?

如果我打开一个文件,如:

ofstream file("file.dat",ios::binary);
Run Code Online (Sandbox Code Playgroud)

要么

ofstream file("file.dat",ios::binary | ios::out);
Run Code Online (Sandbox Code Playgroud)

我怎么能用后一种形式打开的文件,我不能用前一种形式,反之亦然

谢谢

c++ fstream

5
推荐指数
2
解决办法
1266
查看次数

B-Method是否可以替代传统的编程语言?

我听说法国发明了B-Method.它是传统编程语言(如c ++和java)的替代品,还是具有不同用途的完全不同的东西?

programming-languages b-method

5
推荐指数
1
解决办法
214
查看次数

什么是VBA中的Recordset?......它的目的是什么?

什么是RecordsetVBA?

它有什么用途?

你怎么用它们?

database ms-access vba

4
推荐指数
1
解决办法
1万
查看次数

如何像在MATLAB中一样将JPEG图像像素作为3D数组访问?

我想用C++处理图像.如何在MATLAB中访问表示JPEG图像的3D数组?

c++ matlab jpeg image-processing

2
推荐指数
1
解决办法
903
查看次数