➤ 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!!