Labirentte en kısa yol bulma problemi algoritmalar konusunda en ilginç konulardan birisi olmuştur çünkü günlük hayatta bir çok yerde kullanıldığından bu alan çok önem kazanmıştır.Şimdi 4*4 lük bir matris üzerinde gerçeklenmsi aşağıdadır.
#include<iostream>
using namespace std;
int **p,counter=0;
int x,y; int l=0;
/*void print(int a,int b)
{ cout<<endl<<endl;
for(int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
cout<<p[i][j]<<" ";
cout<<endl;
}
}
*/
void recursive(int a,int b)
{ l++;
if(a==x-1&&b==y-1)
{
p[x-1][y-1]=1;
// print(x-1,y-1);p[x-1][y-1]=0;
counter++;
return;
}
if(a+1<x&&p[a+1][b]==0)
{
p[a+1][b]=1;
recursive(a+1,b);
p[a+1][b]=0;
}
if(a-1>=0&&p[a-1][b]==0)
{
p[a-1][b]=1;
recursive(a-1,b);
p[a-1][b]=0;
}
if(b+1<y&&p[a][b+1]==0)
{
p[a][b+1]=1;
recursive(a,b+1);
p[a][b+1]=0;
}
if(b-1>=0&&p[a][b-1]==0)
{
p[a][b-1]=1;
recursive(a,b-1);
p[a][b-1]=0;
}
return;
}
void define(int a,int b)
{
p=new int *[a];
for(int i=0;i<b;i++)
p[i]=new int [b];
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
p[i][j]=0;p[0][0]=1;
}
main()
{
cout<<"Tahtanizin Boyutunu girin:";
cin>>x>>y;
define(x,y);
recursive(0,0);
// print(x,y);cout<<endl<<endl;
cout<<x<<" e "<<y<<" luk bir tahtada toplam-->>"<<counter<<" Yol Bulunmustur."<<endl;
cout<<"Ve ayrica Program toplamda "<<l<<" Defa kosuyor...."<<endl<<endl<<endl;
system ("pause");
}
MEHMET SALİH DEVECİ
IT Tutorial IT Tutorial | Oracle DBA | SQL Server, Goldengate, Exadata, Big Data, Data ScienceTutorial

ßenım Odewım Var da En Kısa Zamanda YardımCı oLurmuSanız SewınıRım..!