Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何求解最近邻启发式算法 我试图用C++中的二维数组来解决TSP问题的最近邻启发式算法。这是我的代码。我想创建起点节点从0到6的旅行,这样我可以在之后比较它们(哪一个距离最小)。 然而,在调试之后,我知道我的问题在哪里,但我不明白为什么它不起作用。我的已访问[i+1]未在下一个索引中保存smallestIndex void getNearestNeighbor(float distanceMatrix[][6], int startNode, int visited[6]){ bool unvisited[6]{ 1,1,1,1,1,1 }; visited[0] = { startNode }; unvisited[startNode] = false; for (int i = 0; i < 5; i++) { float smallestDistance = 100.0; int smallestIndex =visited[i]; for (int j = 0; j < 6; j++) { if (visited[i] != j && unvisited[j] == true) { if (smallestDistance > distanceMatrix[visited[i]][j]) { smallestDistance = distanceMatrix[visited[i]][j]; smallestIndex = j; } } } visited[i+1] = smallestIndex; unvisited[smallestIndex] = false; //cout << visited[i] << endl; } } int main() { int visited[6]; float distanceMatrix[6][6]{ { 0, 17, 11, 5.39, 10.8, 8.6 }, { 17, 0, 10.2, 12.5, 19.1, 25.6 }, { 11, 10.2, 0, 9.85, 18.8, 19 }, { 5.39, 12.5, 9.85, 0, 8.94, 13.5 }, { 10.8, 19.1, 18.8, 8.94, 0, 14 }, { 8.6, 25.6, 19, 13.5, 14, 0 } }; for (int srtNode = 0; srtNode < 6; srtNode++) { getNearestNeighbor(distanceMatrix, srtNode, visited); cout << visited[srtNode]; //calcDistance(distanceMatrix, visited); } system("pause"); return EXIT_SUCCESS; } void getNearestNeighbor(浮点距离矩阵[][6],int起始节点,int访问[6]){ 布尔未访问[6]{1,1,1,1,1}; 已访问[0]={startNode}; 未访问的[startNode]=false; 对于(int i=0;i_C++_Arrays_Nearest Neighbor - Fatal编程技术网

如何求解最近邻启发式算法 我试图用C++中的二维数组来解决TSP问题的最近邻启发式算法。这是我的代码。我想创建起点节点从0到6的旅行,这样我可以在之后比较它们(哪一个距离最小)。 然而,在调试之后,我知道我的问题在哪里,但我不明白为什么它不起作用。我的已访问[i+1]未在下一个索引中保存smallestIndex void getNearestNeighbor(float distanceMatrix[][6], int startNode, int visited[6]){ bool unvisited[6]{ 1,1,1,1,1,1 }; visited[0] = { startNode }; unvisited[startNode] = false; for (int i = 0; i < 5; i++) { float smallestDistance = 100.0; int smallestIndex =visited[i]; for (int j = 0; j < 6; j++) { if (visited[i] != j && unvisited[j] == true) { if (smallestDistance > distanceMatrix[visited[i]][j]) { smallestDistance = distanceMatrix[visited[i]][j]; smallestIndex = j; } } } visited[i+1] = smallestIndex; unvisited[smallestIndex] = false; //cout << visited[i] << endl; } } int main() { int visited[6]; float distanceMatrix[6][6]{ { 0, 17, 11, 5.39, 10.8, 8.6 }, { 17, 0, 10.2, 12.5, 19.1, 25.6 }, { 11, 10.2, 0, 9.85, 18.8, 19 }, { 5.39, 12.5, 9.85, 0, 8.94, 13.5 }, { 10.8, 19.1, 18.8, 8.94, 0, 14 }, { 8.6, 25.6, 19, 13.5, 14, 0 } }; for (int srtNode = 0; srtNode < 6; srtNode++) { getNearestNeighbor(distanceMatrix, srtNode, visited); cout << visited[srtNode]; //calcDistance(distanceMatrix, visited); } system("pause"); return EXIT_SUCCESS; } void getNearestNeighbor(浮点距离矩阵[][6],int起始节点,int访问[6]){ 布尔未访问[6]{1,1,1,1,1}; 已访问[0]={startNode}; 未访问的[startNode]=false; 对于(int i=0;i

如何求解最近邻启发式算法 我试图用C++中的二维数组来解决TSP问题的最近邻启发式算法。这是我的代码。我想创建起点节点从0到6的旅行,这样我可以在之后比较它们(哪一个距离最小)。 然而,在调试之后,我知道我的问题在哪里,但我不明白为什么它不起作用。我的已访问[i+1]未在下一个索引中保存smallestIndex void getNearestNeighbor(float distanceMatrix[][6], int startNode, int visited[6]){ bool unvisited[6]{ 1,1,1,1,1,1 }; visited[0] = { startNode }; unvisited[startNode] = false; for (int i = 0; i < 5; i++) { float smallestDistance = 100.0; int smallestIndex =visited[i]; for (int j = 0; j < 6; j++) { if (visited[i] != j && unvisited[j] == true) { if (smallestDistance > distanceMatrix[visited[i]][j]) { smallestDistance = distanceMatrix[visited[i]][j]; smallestIndex = j; } } } visited[i+1] = smallestIndex; unvisited[smallestIndex] = false; //cout << visited[i] << endl; } } int main() { int visited[6]; float distanceMatrix[6][6]{ { 0, 17, 11, 5.39, 10.8, 8.6 }, { 17, 0, 10.2, 12.5, 19.1, 25.6 }, { 11, 10.2, 0, 9.85, 18.8, 19 }, { 5.39, 12.5, 9.85, 0, 8.94, 13.5 }, { 10.8, 19.1, 18.8, 8.94, 0, 14 }, { 8.6, 25.6, 19, 13.5, 14, 0 } }; for (int srtNode = 0; srtNode < 6; srtNode++) { getNearestNeighbor(distanceMatrix, srtNode, visited); cout << visited[srtNode]; //calcDistance(distanceMatrix, visited); } system("pause"); return EXIT_SUCCESS; } void getNearestNeighbor(浮点距离矩阵[][6],int起始节点,int访问[6]){ 布尔未访问[6]{1,1,1,1,1}; 已访问[0]={startNode}; 未访问的[startNode]=false; 对于(int i=0;i,c++,arrays,nearest-neighbor,C++,Arrays,Nearest Neighbor,只有一个元素不需要{},您应该 visited[0] = startNode; bool unvisited[6] = { 1,1,1,1,1,1 }; 还有这个 bool unvisited[6]{ 1,1,1,1,1,1 }; 初始分配需要“=”,您应该 visited[0] = startNode; bool unvisited[6] = { 1,1,1,1,1,1 }; 我尝试复制您的代码,并更改语法错误。程序可以运行。虽然我不知道结果是真是假。但它可以输出结果。哪一个是预期的

只有一个元素不需要{},您应该

visited[0] = startNode;
bool unvisited[6] = { 1,1,1,1,1,1 };
还有这个

bool unvisited[6]{ 1,1,1,1,1,1 };
初始分配需要“=”,您应该

visited[0] = startNode;
bool unvisited[6] = { 1,1,1,1,1,1 };

我尝试复制您的代码,并更改语法错误。程序可以运行。虽然我不知道结果是真是假。但它可以输出结果。哪一个是预期的输出?请准确描述您正在尝试执行的操作。。。。。。。。。。。。。。。。。。。。