AC题解

初一16班 麦睿生  •  4个月前


模拟大法
#include<bits/stdc++.h>
using namespace std;
char a[15][15]; 
int i,j,f1,f2,c1,c2,tf1=-1,tf2=0,tc1=-1,tc2=0,t,k;
bool ch;
int main()
{
	scanf("%d",&t);
	for(k=1;k<=t;k++)
	{
		ch=false;
		for(i=1;i<=10;i++)
		{
			for(j=1;j<=10;j++)
			{
				cin>>a[i][j];
				if(a[i][j]=='C')
				{
					f1=i;
					f2=j;
				}
				else if(a[i][j]=='M')
				{
					c1=i;
					c2=j;
				}
			}
		}
		tf1=-1,tf2=0,tc1=-1,tc2=0;
		for(i=1;i<=100;i++)
		{
			if(f1+tf1>=1&&f1+tf1<=10&&f2+tf2>=1&&f2+tf2<=10&&a[f1+tf1][f2+tf2]!='*')
			{
				f1+=tf1;
				f2+=tf2;
			}
			else
			{
				if(tf1==-1&&tf2==0)
				{
					tf1=0;
					tf2=1;	
				}
				else if(tf1==0&&tf2==1)
				{
					tf1=1;
					tf2=0;
				}
				else if(tf1==1&&tf2==0)
				{
					tf1=0;
					tf2=-1;
				}
				else if(tf1==0&&tf2==-1)
				{
					tf1=-1;
					tf2=0;
				}
			}
			if(c1+tc1>=1&&c1+tc1<=10&&c2+tc2>=1&&c2+tc2<=10&&a[c1+tc1][c2+tc2]!='*')
			{
				c1+=tc1;
				c2+=tc2;
			}
			else
			{
				if(tc1==-1&&tc2==0)
				{
					tc1=0;
					tc2=1;	
				}
				else if(tc1==0&&tc2==1)
				{
					tc1=1;
					tc2=0;
				}
				else if(tc1==1&&tc2==0)
				{
					tc1=0;
					tc2=-1;
				}
				else if(tc1==0&&tc2==-1)
				{
					tc1=-1;
					tc2=0;
				}
			}
			if(f1==c1&&f2==c2)
			{
				printf("%d\n",i);
				ch=true;
				break;
			}
		}
		if(!ch)printf("-1\n");
	}
	return 0;
}

评论:

ac个丹阳么啊


guo1421  •  2个月前

可以通过啊


初一16班 麦睿生  •  2个月前