ALLIZWEL - ALL IZZ WELL - SPOJ Solution C++

  Problem Link : ALLIZWEL 


👉 Hint : edit please

 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;

bool dfs(int i,int j,string all,int l,int visited[101][101],char arr[101][101])
{
	visited[i][j]=1;
	if(l==10)
		return true;
	if(arr[i-1][j]==all[l] && !visited[i-1][j] && dfs(i-1,j,all,l+1,visited,arr))
		return true; 
	if(arr[i][j-1]==all[l] && !visited[i][j-1] && dfs(i,j-1,all,l+1,visited,arr))
		return true; 
	if(arr[i-1][j-1]==all[l] && !visited[i-1][j-1] && dfs(i-1,j-1,all,l+1,visited,arr))
		return true; 
	if(arr[i+1][j]==all[l] && !visited[i+1][j] && dfs(i+1,j,all,l+1,visited,arr))
		return true; 
	if(arr[i][j+1]==all[l] && !visited[i][j+1] &&  dfs(i,j+1,all,l+1,visited,arr))
		return true; 
	if(arr[i+1][j+1]==all[l] && !visited[i+1][j+1] && dfs(i+1,j+1,all,l+1,visited,arr))
		return true;
	if(arr[i+1][j+1]==all[l] && !visited[i+1][j+1] && dfs(i+1,j+1,all,l+1,visited,arr))
		return true;
	if(arr[i-1][j+1]==all[l] && !visited[i-1][j+1] && dfs(i-1,j+1,all,l+1,visited,arr))
		return true;
	if(arr[i+1][j-1]==all[l] && !visited[i+1][j-1] && dfs(i+1,j-1,all,l+1,visited,arr))
		return true;

	visited[i][j]=0;
	return false;


		 	 	 

		 


}

int main()
{
	int t;
	cin>>t;
	char arr[101][101];
	int visited[101][101];
	string all="ALLIZZWELL";
	while(t--)
	{
		int r,c;
		cin>>r>>c;
		for(int i=1;i<=r;i++)
			for(int j=1;j<=c;j++)
				cin>>arr[i][j];
		memset(visited,0,sizeof(visited));
		int flag=0;
		for(int i=1;i<=r;i++)
		{
			for(int j=1;j<=c;j++)
			{
				if(arr[i][j]=='A')
				{
					visited[i][j]=1;
					if(dfs(i,j,all,1,visited,arr))
					{
						flag=1;
						break;
					}
					visited[i][j]=0;
				}

			}
			if(flag==1)
					break;
		}	
		if(flag==0)
		    cout<<"NO"<<endl;
		else
		    cout<<"YES"<<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!!