PDA

View Full Version : سوال: کمک در کد زدن حربصانه و کروسکال



bhossein
دوشنبه 29 اردیبهشت 1393, 15:49 عصر
سلام مهندسای آینده . برای یه گراف می خواستم با استفاده از دو الگوریتم کروسکال و حریصانه درخت پوشا و بهینه بدست بیارم. ولی خیلی وقته بود کد نزده بودم برا همین مشکل داشتم
تو هر دو الگوریتم نباید حلقه تشکیل شود که این همون شرط امکان سنجی است و
مشکل من تو بخش امکان سنجی است. یعنی نمی دونم که چه جوری کد بزنم که حلقه تشکیل نشه
کد رو نوشتم.


#include <iostream>

using namespace std;

int main()
{
int yal=0,k,temp,vshomarandeh=0,masir[10][10],masircopy[10][10],position1=0,position2[0][0],noghat[10],n,select[2][45],shomarandeh=0,vazn[yal];

cout<<".....................HELLOOOOOOOOO..........."<<endl<<"....in barnameh kotah-tarin asirbary residan be maghsad ra moshakhas mikonad...."<<endl<<endl;
cout<<" ##### AZ KODAM ALGORITM MIKHAHID ESTEFADEH KONIIIIIIIIID? ######"<<endl<<endl<<endl;
cout<<" harisaneh=2 ^^^ keroskal=1 ^^^ koole poshti=3 "<<endl;
cin >>n;
if (n==2)
{
// geraftan masir az karbar//
cout<<" How many point do you have?(teadad noghat bayad kamtar az 11 bashad ";
cout <<" tedad noghat va yal ra vared konid "<<endl<<"tedad noghat:";
cin >>n;
cin>> yal;
//nam-gozari gereha v rikhtan da arraye marbot be node ha
for (int a=0;a<n;a++)
{
noghat[a]=(a+1);
}
//gereftam vaz yalha , be dat avardan matris masir
for (int i=0;i<n;i++)
{
for (int j=i+1;j<n;j++)
{
cout <<"enter the cost of between "<<noghat[i]<<" and "<<noghat[j]<<" :";
cin >> masir[i][j];
if (masir[i][j]>0)
{
vazn[vshomarandeh]=masir[i][j];
vshomarandeh++;
}
masir[j][i]=0;
}
masir[i][i]=0;
}
//namayesh matrisi masir be karbar
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
cout<< masir[i][j]<<" ";
cout<<endl;
}
// shoro kar algoritm//
// marhaleye select//
//ya matris shabih matris masir dorost mikonim ta betavan anra dastkari konim//
//geraftan copy az masir//
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
masircopy[i][j]=masir[i][j];
}
//moratab kardan arayeye vazn//
for (int b=0;b<yal-1;b++)
{
for (int a=0;a<yal-1;a++)
{
if (vazn[a]>vazn[a+1])
{
temp=vazn[a];
vazn[a]=vazn[a+1];
vazn[a+1]=temp;
}
}

}
//namayesh moratab shodeya vazn ha//
for (int a=0;a<yal;a++)
{
cout<<vazn[a]<<endl;
}
//moratab kardan yal bar hasb vazn ba rikhtan an dar araye select//
k=0;
int flag=0;
while (k!=7)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (masir[i][j]==vazn[k])
{
select[0][k]=(i+1);
select[1][k]=(j+1);
masir[i][j]=0;
k++;
flag=1;
}
}
}
if (flag==0)
{
k++;
flag=0;
}
}
//namayesh araye select
for (int i=0;i<yal;i++)
cout<<endl<<select[0][i]<<"<==>"<<select[1][i]<<endl;

}
return 0;
}

bhossein
چهارشنبه 31 اردیبهشت 1393, 22:11 عصر
یعنی یکی نیس مارو دریابه!!!!
واقعا من باس چجوری کد بزنم که تشکیل شدن حلقه در گراف رو تشخیص بده!!!
اگه نمی دونمی هم به خاطر دل من بیاین بگین نمی دونین تا حداقل شریک دردم بشین:افسرده: