所以我在Linux中,当你从命令行执行它时,我希望有一个程序接受参数.
例如,
./myprogram 42 -b -s
那么程序会将该数字42存储为int并执行某些代码部分,具体取决于它是什么参数-b或-s.
我目前正在做家庭作业,以实施Bellman-Ford算法.到目前为止,我已经设法读取提供的图形,将其放入向量(使用1d向量表示具有行主要顺序的2d)用作矩阵.我正在使用一个跟踪边缘权重的结构,一个是否为无穷大(没有边缘存在)的布尔值以及一个跟踪前一个节点的变量.
我所困扰的实际上是实现了dang算法.我已经阅读了http://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm中的伪代码,但我很难掌握如何使用该算法.前80行是在文件中读取,初始化向量,将值扔到正确位置的向量中.下面是我开始为算法实现的内容.我确实有一些具体的问题.
1)在我发现的算法的所有解释中,你使用算法#of nodes - 1次.在我看过的一些实现中,我倾向于从1开始.为什么会这样?此外,通过我的实现,这仍然有意义吗?
2)进一步在维基百科伪代码中,它表示检查每个边u,v,其中u是起始顶点,v是结束顶点.在我的矩阵中,尽可能接近我的意思,这意味着我需要检查每一行的重量/值,列对,看看是否有更好的路径.我......不确定我是否正确地解释了这一点,或者甚至将其理解为这一点.任何建议/指导/提示/演示将不胜感激.下面是源代码,后面是教师演示输入的粘贴.
#include <fstream>
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
struct graphNode
{
int value; //Weight of the edge
bool isInfinity; //Boolean to flag an edge as infinity
int pred; //predecessor node
};
// Code for reading inputfile cribbed and modified from http://stackoverflow.com/questions/7651243/c-read-a-file-name-from-the-command-line-and-utilize-it-in-my-file
int main(int argc, char** argv)
{
ifstream input; // ifstream for the input
string inFile = ""; //name of the input file
int row; //Variable to keep …Run Code Online (Sandbox Code Playgroud)