我正在完成一项任务,我需要在图表上找到最短路径 算法没有任何问题。问题是如何从源输出到所有其他顶点的路径。边缘也有名字,不仅有重量。我该如何正确初始化字符串矩阵?有可能吗?
我希望此代码有效:
printf(" -(%s)-> %d", names[prev][next], mas[j]);
mas[j]
是具有顶点的数组
names
- string
我试图以这种方式初始化矩阵:
string names[N][N] = {
{'0', 'A', '0', 'B', 'E', '0', '0', 'P1', '0'},
{'A', '0', 'D', 'I', '0', '0', '0', '0', '0'},
{'0', 'D', '0', '0', '0', 'H', 'F', '0', '0'},
{'B', 'I', '0', '0', '0', 'H', '0', '0', '0'},
{'E', '0', '0', '0', '0', '0', '0', 'P2', '0'},
{'0', '0', 'H', 'H', '0', '0', '0', '0', 'P4'},
{'0', '0', 'F', '0', '0', '0', '0', '0', 'P3'},
{'0', '0', '0', '0', '0', '0', '0', '0', '0'},
{'0', '0', '0', '0', '0', '0', '0', '0', '0'},
};
答案 0 :(得分:1)
您对字符串文字使用了错误的引号。单引号'
用于字符文字,实际上'P1'
是一个多字符文字(我确定你甚至不想搞砸)。相反,请在文字周围使用双引号"
。
他们都需要成为字符串文字的原因是因为没有std::string
构造函数只需要char
。但是,有一个构造函数采用C风格的字符串(由字符串文字创建)。
请注意,printf
需要一个C风格的字符串,因此您需要执行names[prev][next].c_str()
。