Şimdi Ara

c++ çıktının mantığı nedir?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir (2 Mobil) - 1 Masaüstü2 Mobil
5 sn
2
Cevap
0
Favori
101
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • arkadaşlar aşağıda verdiğim kod klasik kruskal algoritması, fakat anlamadığım şey ise çıktısı yani source 'u inceliyorum ve bildiğim kruskalı sorguluyorum çıktının mantığını hala anlayamadım. açıklayabilecek olan varmı

    girdi-çıktı ss i
    Resim Yükle - Hızlı Resim
    image
    https://imgyukle.com/i/yQXEHH


    #include<stdio.h>

    #define MAX 30

    typedef struct edge
    {
    int u,v,w;
    }edge;

    typedef struct edgelist
    {
    edge data[MAX];
    int n;
    }edgelist;

    edgelist elist;

    int G[MAX][MAX],n;
    edgelist spanlist;

    void kruskal();
    int find(int belongs[],int vertexno);
    void union1(int belongs[],int c1,int c2);
    void sort();
    void print();

    void main()
    {
    int i,j,total_cost;

    printf("\nEnter number of vertices:");

    scanf("%d",&n);

    printf("\nEnter the adjacency matrix:\n");

    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    scanf("%d",&G[i][j]);

    kruskal();
    print();
    }

    void kruskal()
    {
    int belongs[MAX],i,j,cno1,cno2;
    elist.n=0;

    for(i=1;i<n;i++)
    for(j=0;j<i;j++)
    {
    if(G[i][j]!=0)
    {
    elist.data[elist.n].u=i;
    elist.data[elist.n].v=j;
    elist.data[elist.n].w=G[i][j];
    elist.n++;
    }
    }

    sort();

    for(i=0;i<n;i++)
    belongs[i]=i;

    spanlist.n=0;

    for(i=0;i<elist.n;i++)
    {
    cno1=find(belongs,elist.data[i].u);
    cno2=find(belongs,elist.data[i].v);

    if(cno1!=cno2)
    {
    spanlist.data[spanlist.n]=elist.data[i];
    spanlist.n=spanlist.n+1;
    union1(belongs,cno1,cno2);
    }
    }
    }

    int find(int belongs[],int vertexno)
    {
    return(belongs[vertexno]);
    }

    void union1(int belongs[],int c1,int c2)
    {
    int i;

    for(i=0;i<n;i++)
    if(belongs[i]==c2)
    belongs[i]=c1;
    }

    void sort()
    {
    int i,j;
    edge temp;

    for(i=1;i<elist.n;i++)
    for(j=0;j<elist.n-1;j++)
    if(elist.data[j].w>elist.data[j+1].w)
    {
    temp=elist.data[j];
    elist.data[j]=elist.data[j+1];
    elist.data[j+1]=temp;
    }
    }

    void print()
    {
    int i,cost=0;

    for(i=0;i<spanlist.n;i++)
    {
    printf("\n%d\t%d\t%d",spanlist.data[i].u,spanlist.data[i].v,spanlist.data[i].w);
    cost=cost+spanlist.data[i].w;
    }

    printf("\n\nCost of the spanning tree=%d",cost);
    }
    Resim Yükle - Hızlı Resim
    image
    https://imgyukle.com/i/yQXEHH







  • Yapay Zeka’dan İlgili Konular
    CSB açılımı ve anlamı nedir ?
    11 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.