1 条题解

  • 0
    @ 2025-4-12 22:06:17

    C :

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int i1,i2,j1,j2,i,x[12][12]={0},k=1,m=0,n=0,sum=0;
    	char c[12];
    	for(i=0;i<=11;i++)
    		x[i][0]=x[0][i]=x[11][i]=x[i][11]=1;
    	while(scanf("%s",c)==1&&strlen(c)>5)
    	{
    		for(i=0;i<10;i++)
    		{
    			if(c[i]=='*')x[k][i+1]=1;
    			else if(c[i]=='C'){x[k][i+1]=0;i1=k;i2=i+1;}
    			else if(c[i]=='F'){x[k][i+1]=0;j1=k;j2=i+1;}
    		}
    		k++;
    		if(k==11){
    			while(i1!=j1||i2!=j2)
    			{
    				if(m==0)if(x[i1-1][i2]==1)m=1;else i1--;
    				else if(m==1)if(x[i1][i2+1]==1)m=2;else i2++;
    				else if(m==2)if(x[i1+1][i2]==1)m=3;else i1++;
    				else if(m==3)if(x[i1][i2-1]==1)m=0;else i2--;
    				if(n==0)if(x[j1-1][j2]==1)n=1;else j1--;
    				else if(n==1)if(x[j1][j2+1]==1)n=2;else j2++;
    				else if(n==2)if(x[j1+1][j2]==1)n=3;else j1++;
    				else if(n==3)if(x[j1][j2-1]==1)n=0;else j2--;
    				sum++;
    				if(sum>10000)break;
    			}
    			if(sum<10000)printf("%d\n",sum);else printf("0\n");
    			memset(x,0,sizeof(x));k=1;m=0;n=0;
    			for(i=0;i<=11;i++)
    				x[i][0]=x[0][i]=x[11][i]=x[i][11]=1;
    			sum=0;
    		}
    	}
    	return 1;
    }
    

    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

    信息

    ID
    2841
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者