Enviado em 24/11/2018 - 20:35h
Galera, estou tentando codar um algoritmo que calcula o numero minimo de operações escalares de uma cadeia de matrizes, porem no codigo que eu fiz, logo apos definir a quanidade de matrizes e preencher o vetor de dimensoes das matrizes o codigo falha e fecha o programa. Alguem ai poderia rodar esse codigo e me ajudar a reslver esse problema. Ja tenho um tempao quebrando cabeça...#include<bits/stdc++.h>
using namespace std;
int **cust_Minimum(std::vector<int> vet);
void print_Parents();
int main()
{
setlocale(LC_ALL, "");
unsigned int n, l, c;
cout<<"Quantas matrizes? ";
cin>>n;
std::vector<int> vetorDimensoes;
int **S;
cout<<"Digite a ordem da matriz separada por espaço. Ex.: 2x2 = 2 2\n\n";
for(int m = 0; m < n; m++)
{
cout<<"Matriz "<<m+1<<": ";
cin>>l>>c;
vetorDimensoes.push_back(l);
if(m==n-1)
{
vetorDimensoes.push_back(c);
}
}
int **M = cust_Minimum(vetorDimensoes);
return 0;
}
int **cust_Minimum(std::vector<int> vet)
{
int n = vet.size()-1;
int **M = (int**)malloc(n*sizeof(int)), **S = (int**)malloc(n*sizeof(int));
for(int i = 1; i<=n; i++)
{
M[i][i]=0;
}
for(int l = 2; l <= n; l++)
{
for(int i = 1; i < n-l+1;i++)
{
int j = i+l-1;
for(int k = i; k < j-1; k++)
{
int q = M[i][k] + M[k+1][j] + vet[i-1] * vet[k] * vet[j];
if (q < M[i][j])
{
M[i][j]=q;
S[i][j]=k;
}
}
}
}
return M;
}