1 solutions

  • 0
    @ 2025-11-5 15:11:43

    C++ :

    #include<stdio.h>
    struct node
    {
    	int x,y;
    	int move;
    };
    char a[10][10];
    void move(node& animal)
    {
    	switch (animal.move)
    	{
    	case 0:
    		{
    			if (animal.x==0||a[animal.x-1][animal.y]=='*')
    				animal.move=(animal.move+1)%4;
    			else animal.x--;
    			break;
    		}
    		case 1:
    		{
    			if (animal.y==9||a[animal.x][animal.y+1]=='*')
    				animal.move=(animal.move+1)%4;
    			else animal.y++;
    			break;
    		}
    		case 2:
    		{
    			if (animal.x==9||a[animal.x+1][animal.y]=='*')
    				animal.move=(animal.move+1)%4;
    			else animal.x++;
    			break;
    		}
    		case 3:
    		{
    			if (animal.y==0||a[animal.x][animal.y-1]=='*')
    				animal.move=(animal.move+1)%4;
    			else animal.y--;
    			break;
    		}
    	}
    }
    int main()
    {
    	while(scanf("%s",a[0])!=EOF)
    	{
    		for (int i=1;i<10;i++) scanf("%s",a[i]);
    		node people,niu;
    		int x,y,x1,y1;
    		for (int i=0;i<10;i++)
    			for (int j=0;j<10;j++)
    			{
    				if (a[i][j]=='C') {x=niu.x=i;y=niu.y=j;niu.move=0;}
    				if (a[i][j]=='F') {x1=people.x=i;y1=people.y=j;people.move=0;}
    			}
    			int all=0;
    			int ok=0;
    			while(niu.x!=people.x||niu.y!=people.y)
    			{
    				all++;
    				move(niu);
    				move(people);
    				if (all>=160000) {printf("0\n");ok=1;break;}
    			}
    			if (!ok)
    			printf("%d\n",all);
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    16500
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By