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;
}
تو هر دو الگوریتم نباید حلقه تشکیل شود که این همون شرط امکان سنجی است و
مشکل من تو بخش امکان سنجی است. یعنی نمی دونم که چه جوری کد بزنم که حلقه تشکیل نشه
کد رو نوشتم.
#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;
}