c++ - 它给出了段错误。我正在尝试实现福特富克森算法,在这里我正在从文件中读取

标签 c++ ford-fulkerson

<分区>

int main()
{
    int i,j,k,l,m;
    int maxflow=0;
    int first,second,capac;

    int residual[100][100];
    //reading from file
    FILE*fp;
    fp=fopen("ford.txt","r");
    fscanf(fp,"%d %d",&node,&edge);
    cout<<"nodes are"<<node<<"\n"<<"edges are"<<edge<<"\n";
    for(j=1;j<=node;j++)
    {
        for(k=1;k<=node;k++)
        {
            capacity[j][k]=0;
        }  
    }
    for(i=0;i<edge;i++)
    { 
        fscanf(fp,"%d %d %d",&first,&second,&capac);
        cout<<first<<"->"<<second<<"="<<capac<<"\n"; //it is printing this
        capacity[first][second]=capac;//crashes here at last i/p i.e.1=edge-1

    }
    cout<<"abc"; //this is not printed
    for(l=1;l<=node;l++)
    {
        for(m=1;m<=node;m++)
        {
            flow[l][m]=capacity[l][m];
            flow[m][l]=0;
        }
    }
    return 0;
}

它甚至没有在 cout 语句中打印“abc”。我正在尝试实现 Ford-Fulkerson 算法。在这里,我正在读取文件并初始化容量流矩阵。之后我调用了 maxflow 函数,我在这里省略了。

最佳答案

就目前而言,您的代码更多的是 C 而不是 C++。尽管(正如@jrok 评论的那样)缩进和间距之类的东西可能需要一些改进,但我认为更大的变化会更有帮助。与其将一堆不相关的“东西”打包到 main 中,不如将它们拆分成函数(可能还有类来表示程序中的逻辑“部分”)。

至少从外观上看,您可能希望从具有(至少)I/O 函数的 matrix 类开始。这可能应该使用 std::vector 来存储数据,因此它可以从文件中读取大小,然后分配适当的空间量来保存该数据。

class matrix { 
    std::vector<int> data;
    size_t rows;
    size_t columns;
public:
    std::istream &read(std::istream &infile);
    std::ostream &write(std::ostream &outfile);
};

有了矩阵的合理定义,看起来你现在拥有的大部分代码都会变成类似这样的东西:

std::ifstream in("ford.txt");

matrix capacity;
capacity.read(in); // or `in >> capacity;`

matrix flow = capacity;

关于c++ - 它给出了段错误。我正在尝试实现福特富克森算法,在这里我正在从文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314148/

相关文章:

c++ - 从java到c++的链表

c++ - 在 Debian 8.7 上安装 g++ 7.0.1

algorithm - 寻找流网络的最小切割

algorithm - Professor Adam's Kids(确定最大流量)

c++ - 为什么在使用 PRNG 估算 Pi 时总是得到 2.8284?

c++ - C++ 中只有静态方法的类的优点

javascript - SpiderMonkey 是线程安全的是什么意思?

algorithm - 在 Ford Fulkerson 算法中添加新边后有效计算最大流量?

algorithm - 最大二分匹配(ford-fulkerson)

java - 难以理解和实现 Ford Fulkerson 算法