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İ

YAZILIM MÜHENDİSİ

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s