➤ Problem Link : SPIKES
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int arr1[4]={1,0,0,-1};
int arr2[4]={0,-1,1,0};
bool spikes(int x,int y,char arr[40][40],bool visited[40][40],int cnt,int spk,int n,int m)
{
int a,b;
bool ans=false;
visited[x][y]=1;
if(cnt>spk)
return false;
for(int i=0;i<4;i++)
{
a=x+arr1[i];
b=y+arr2[i];
if(a<n && a>=0 && b<m && b>=0 && !visited[a][b] && arr[a][b]!='#')
{
if(arr[a][b]=='.')
ans=ans||spikes(a,b,arr,visited,cnt,spk,n,m);
else if(arr[a][b]=='s')
ans=ans||spikes(a,b,arr,visited,cnt+1,spk,n,m);
else if(arr[a][b]=='x')
{
if(cnt<=spk)
return true;
}
}
}
visited[x][y]=0;
return ans;
}
int main()
{
int n,m,s;
bool ans;
cin>>n>>m>>s;
char arr[40][40];
bool visited[40][40];
memset(visited,0,sizeof(visited));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cin>>arr[i][j];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
if(arr[i][j]=='@')
{
ans=spikes(i,j,arr,visited,0,s/2,n,m);
if(ans)
break;
}
}
if(ans)
cout<<"SUCCESS"<<endl;
else
cout<<"IMPOSSIBLE"<<endl;
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
