我正在尝试使用优先级队列来实现dijkstra算法,但我无法理解它是如何工作的.我在网上阅读了很多指南,但我根本无法理解这个算法.
我的问题是:每个节点的优先级是什么?我认为它是最小值的传入边缘的权重,但我不确定.这是真的?
第二个问题,当我提取队列的根时,如果该节点不与没有一个被访问节点相邻,那么该如何工作?
我刚刚安装了genymotions,但当我尝试在其上启动我的应用程序时,如本段末尾所述,即使新的(genymotion)正在运行,eclipse也会启动旧的模拟器.我试图更改调试配置,但我能看到的唯一虚拟设备target是旧的模拟器(见下图).
如果在target我的回答中,我收到以下错误:
[2014-01-30 19:50:00 - HelloWorld] No active compatible AVD's or devices found. Relaunch this configuration after connecting a device or starting an AVD.
Run Code Online (Sandbox Code Playgroud)
此外,我按照常见问题解答建议如何使用SDK.我在第二张照片中显示了我的配置.
照片中显示的设备都是用AVD制作的,没有genymotion,也没有正在运行的设备:

在这里我把genymotion的配置:

我怎么能说eclipse启动genymotion模拟器而不是AVD?
我想通过引用将对象传递给Contructor,但是我遇到了问题,因为我不知道如何将它绑定到类的变量.
在这里,我发布了一些代码,错误上升了.
class ShortestPath{
public:
ShortestPath(Graph& graph): graph(graph){};[...]
private:
Graph *graph;
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,错误上升是:
cannot convert `Graph' to `Graph*' in initialization
Run Code Online (Sandbox Code Playgroud)
如果我写
ShortestPath(Graph& graph): *graph(graph){};[...]
Run Code Online (Sandbox Code Playgroud)
错误是
expected identifier before '*' token
Run Code Online (Sandbox Code Playgroud)
当我调用构造函数时,我应该这样调用吗?最短路径(图表);
我在C中写了一个小程序,我预计向量会出错.
#include <stdlib.h>
#include <stdio.h>
main(){
int vet[0];
vet[0] = 1;
vet[1] = 2;
vet[2] = 2;
vet[3] = 2;
vet[4] = 2;
vet[5] = 2;
vet[6] = 2;
vet[7] = 2;
int x;
for(x=0;x<19;x++) printf("%d\n", vet[x]);
system("pause");
}
Run Code Online (Sandbox Code Playgroud)
在编写这段代码之前,我认为要在向量中添加一个元素,而且他的大小,我应该调用该malloc函数,但后来我发现,如果没有该malloc函数,代码也能正常工作.所以我的问题是,为什么我应该使用malloc函数,如果在这种情况下它没用?为什么在初始化时我应该写一个向量的维度?
我在那行使用那个方法:
f.getCmbAttori().getSelectedItem().toString().split("|")
Run Code Online (Sandbox Code Playgroud)
输入如"13 | Il Signore degli Anelli"并输入:
f.getCmbAttori().getSelectedItem().toString().split("|")[0] = "13"
f.getCmbAttori().getSelectedItem().toString().split("|")[1] = "Il Signore degli Anelli"
Run Code Online (Sandbox Code Playgroud)
它返回一个数组,其中每个字符都是单独的,如下所示:
f.getCmbAttori().getSelectedItem().toString().split("|")[0] = ""
f.getCmbAttori().getSelectedItem().toString().split("|")[1] = "1"
f.getCmbAttori().getSelectedItem().toString().split("|")[2] = "3"
f.getCmbAttori().getSelectedItem().toString().split("|")[3] = "|"
f.getCmbAttori().getSelectedItem().toString().split("|")[4] = "I"
f.getCmbAttori().getSelectedItem().toString().split("|")[5] = "l"
[...]
f.getCmbAttori().getSelectedItem().toString().split("|")[25] = "l"
f.getCmbAttori().getSelectedItem().toString().split("|")[26] = "i"
Run Code Online (Sandbox Code Playgroud)
怎么可能呢?我是以错误的方式打算这种方法吗?这里是我使用的一段代码:
PreparedStatement stmSql = null;
int risultato = 0;
stmSql = f.conn.prepareStatement("insert into recita (CodAttore, CodFilm) values (?, ?)");
stmSql.setInt(1, Integer.parseInt(f.getCmbAttori().getSelectedItem().toString().split("|")[1]));
stmSql.setInt(2, Integer.parseInt(f.getCmbFilmRecita().getSelectedItem().toString().split("|")[1]));
risultato = stmSql.executeUpdate();
Run Code Online (Sandbox Code Playgroud)