Untitled
unknown
plain_text
2 years ago
1.7 kB
5
Indexable
#include<iostream>
using namespace std;
int n,m,mat[21][21],ok=1,maxim=-1,folosite[21][21];
int di[4]={-1,0,1,0};
int dj[4]={0,1,0,-1};
int limite(int linie, int coloana)
{
if(linie>=1 && linie<=n && coloana>=1 && coloana<=m)
return 1;
return 0;
}
void backtracking(int linie, int coloana, int nivel)
{
if(linie==n && coloana==m)
{//cout<<nivel<<" ";
if(nivel>maxim)
{
maxim=nivel;
}
return;
}
else
{
for(int i=0;i<4;i++)
{
if(mat[linie+di[i]][coloana+dj[i]]>=mat[linie][coloana] && limite(linie+di[i],coloana + dj[i])==1 && folosite[linie+di[i]][coloana+dj[i]]==0)
{folosite[linie+di[i]][coloana+dj[i]]=1;
backtracking(linie+di[i],coloana+dj[i],nivel+1);
folosite[linie+di[i]][coloana+dj[i]]=0;
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>mat[i][j];
}
}
//mat[1][1]=1;
backtracking(1,1,1);
if(maxim==-1)
{
cout<<"imposibil";
}
else
cout<<maxim;
return 0;
}Editor is loading...
Leave a Comment