LABİRENTTE EN KISA YOL BULMA PROBLEMİ

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İ

 

Leave a Reply

Your email address will not be published. Required fields are marked *