#c #graph-theory
#c #теория графов
Вопрос:
Я удивлен, почему следующий код, который вычисляет все пары кратчайших пар, не показывает мне никаких выходных данных.
Вот код:
#include <iostream>
#include <conio.h>
using namespace std;
int Min(int a,int b){
return a<=b? a:b;
}
int cost[10][10],a[10][10],i,j,k,c;
int main(){
int n,m;
cout<<"enter number of vertices "<<endl;
cin>>n;
cout<<"enter number of edges "<<endl;
cin>>m;
for (k=1;k<=m;k )
{
cin>>i>>j>>c;
a[i][j]=cost[i][j]=c;
}
for ( i=1;i<=n;i ){
for ( j=1;j<m;j ){
if (a[i][j]==0 amp;amp; i!=j)
a[i][j]=40000;
}
}
for (k=1;k<=n;k )
for (i=1;i<=n;i )
for( j=1;j<=n;j )
a[i][j]=min(a[i][j],a[i][k] a[k][j]);
cout<<" resultant adj matrix n";
for (i=1;j<=n;j ){
for (j=1;i<=n;i ){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
Ответ №1:
У вас есть некоторые опечатки: последние циклы должны выглядеть следующим образом:
for (i=1;i<=n;i ){
for (j=1;j<=n;j ){
Комментарии:
1. можете ли вы указать, что не работает? Печать выходных данных?
2. с этими изменениями выводится: введите количество вершин 2 введите количество ребер 2 3 4 5 6 4 3 результирующая матрица adj 0 0 40000 0
3. Он выводит что-то вроде этого: результирующая матрица adj 0 40000 40000 40000 0 40000 40000 40000 0
4.1 2 4 2 1 6 1 3 11 3 1 3 2 3 2
5. с этим массивом (двумерным) ничего
Ответ №2:
Просто исправьте опечатки в своих циклах, особенно здесь:
cout<<" resultant adj matrix n";
for (i=1;i<=n;i ){
for (j=1;j<=m;j ){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
Ответ №3:
import java.util.*;
class Main{
static int min(int a,int b)
{
if(a<b)
return a;
else
return b;
}
public static void main(String args[])
{
int n,i,j,k;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the number of nodes :- ");
n=sc.nextInt();
int t=n;
int mat[][]=new int[n 1][n 1];
System.out.println("Consider 5000 as infinity :- ");
System.out.println("Enter the values of adjacency matrix :- ");
for(i=1;i<=n;i )
{
for(j=1;j<=n;j )
{
mat[i][j]=sc.nextInt();
}
}
System.out.println("MAT0" " = ");
for(i=1;i<=n;i )
{
for(j=1;j<=n;j )
{
System.out.print(mat[i][j] " ");
}
System.out.print("n");
}
for(k=1;k<=n;k )
{
for(i=1;i<=n;i )
{
for(j=1;j<=n;j )
{
mat[i][j]=min(mat[i][j],mat[i][k] mat[k][j]);
}
}
System.out.println("MAT" k " = ");
for(i=1;i<=n;i )
{
for(j=1;j<=n;j )
{
System.out.print(mat[i][j] " ");
}
System.out.print("n");
}
}
}
}
Комментарии:
1. Вопрос касается C , этот ответ — нет.