View Code of Problem 3684

#include<stdio.h>
int findfather(char a[][1000],int i,int j,int n,int m,int t)
{
	t--;
	if(a[i][j]=='F'&&t>=-1)
	{
		return 1;
	}
	else if(t<-1)
	{
		return 0;
	}
	else 
	{
 
		if((a[i-1][j]=='.'||a[i-1][j]=='F')&&i-1>=0&&findfather(a,i-1,j,n,m,t)==1)
		{
			return 1;
//			printf("%d 1\n",u);
		}
		if(i+1<n&&(a[i+1][j]=='.'||a[i+1][j]=='F')&&findfather(a,i+1,j,n,m,t)==1)
		{
			 return 1;
//				printf("%d 2\n",d);
		}
		if(j-1>=0&&(a[i][j-1]=='.'||a[i][j-1]=='F')&&findfather(a,i,j-1,n,m,t)==1)
		{
		 return 1;
//				printf("%d 3\n",r);
		}
		if(j+1<m&&(a[i][j+1]=='.'||a[i][j+1]=='F')&&findfather(a,i,j+1,n,m,t)==1)
		{
			 return 1;
//				printf("%d 4\n",l);
		}
			return 0;
	}
	return 0;	
}
int main()
{
	int n,m,t;
	while(scanf("%d %d %d",&n,&m,&t)!=EOF)
	{
		getchar();
		char a[n][1000];
		int flagi=0,flagj=0;
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				scanf("%c",&a[i][j]);
				if(a[i][j]=='S')
				{
					flagi=i;flagj=j;
				}
			}
			getchar();
		}
//		printf("%d %d\n",flagi,flagj);
		if(findfather(a,flagi,flagj,n,m,t)>0)
		printf("Happy\n");
		else printf("Cry\n");
	}
 } 

Double click to view unformatted code.


Back to problem 3684