Ввод для крускала с использованием матрицы - PullRequest
0 голосов
/ 25 сентября 2018

Итак, я уже некоторое время пытаюсь изменить эту матрицу, я имею в виду, что я получаю входной файл, подобный этому.

4 

7 6 5 
3 2 
1 

Первое число - это размеры матрицы 4x4.,Последующие числа являются элементами матрицы, она должна быть верхней треугольной матрицей и должна выглядеть следующим образом.

0 5 6 7
0 0 2 3
0 0 0 1
0 0 0 0

Мне нужно это, чтобы построить график и применить к нему KruskalMST, как я могусделай это?Нужно ли вообще это делать, чтобы найти вес ребер между двумя вершинами?Это то, что я сделал до сих пор.

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream inFile;

    inFile.open("file.txt");
    if(!inFile){
        cerr << "Unable to open file!";
        return 0;
    }
    int n;
    inFile >> n;
    cout << n <<endl;

    int matriz[n][n];
    for(int i = 0; i < n; i++){
        for(int j = n; j > 0; j--){
            inFile >> matriz[i][j];
            cout << matriz[i][j]<<endl;
        }
    }
   /*for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cout << matriz[i][j];
        }
    }*/


    inFile.close();
    return 0;
}

1 Ответ

0 голосов
/ 25 сентября 2018

Ну, мне удалось найти ответ для построения матрицы, но по какой-то причине для матриц выше 8x8 код ломается и в качестве ответа дает только нули.Он отлично работает для 8х8 и ниже.Можете ли вы помочь мне разобраться?Файл моего учителя начинается с 10х10 матриц.

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream inFile;

    inFile.open("file.txt");
    if(!inFile){
        cerr << "Unable to open file!";
        return 0;
    }
    int n;
    inFile >> n;
    cout << n <<endl;

    int matriz[n][n];
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            matriz[i][j] = 0;
        }
    }
    int cont = 1;
    for(int i = 1; i <= n; i++){
        for(int j = n; j >= 1; j--){
            if(j<=cont){
            //cout << matriz[i][j]<<endl;
            }else{
            inFile >> matriz[i][j];
            //cout << matriz[i][j]<<endl;
            }
        }
        cont++;
    }

    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            cout << matriz[i][j] <<endl;
        }
    }

    inFile.close();
    return 0;
}
...