小白开


私信TA

用户名:kzy123465

访问量:3921

签 名:

等  级
排  名 21675
经  验 668
参赛次数 0
文章发表 7
年  龄 0
在职情况 学生
学  校 安徽大学江淮学院
专  业

  自我简介:

解题思路:
        用枚举的方法,把每一步的可能都写出来就可以了,比如:此刻向上(U)在白格子里面就左转(L),然后改变格子颜色;以此类推就可以了


注意事项:地图的数组要从0开始,不然答案不一致

参考代码:

#include<bits/stdc++.h>

int a[200][200];
int p,q;

void des(int x,int y,char s,int k)
{
		
	int i;
	for(i=1;i<=k;i++)
	{
		if(s=='U')
		{
			if(a[x][y]==0)
			{
				s='L';
				a[x][y]=1;
				y=y-1;
			}
			else {
				s='R';
				a[x][y]=0;
				y=y+1;
			}
			
		}
		
		else if(s=='D')
		{
			if(a[x][y]==0)
			{
				s='R';
				a[x][y]=1;
				y=y+1;
			}
			else {
				s='L';
				a[x][y]=0;
				y=y-1;
			}
		}
		
		else if(s=='L')
		{
			if(a[x][y]==0)
			{
				s='D';
				a[x][y]=1;
				x=x+1;
			}
			else {
				s='U';
				a[x][y]=0;
				x=x-1;
			}
		}
		
		else if(s=='R')
		{
			if(a[x][y]==0)
			{
				s='U';
				a[x][y]=1;
				x=x-1;
			}
			else {
				s='D';
				a[x][y]=0;
				x=x+1;
			}
		}
	}
	p=x;
	q=y;
} 

int main()
{
	int i,j;
	int m,n,k,x,y;
	char s;
	
	scanf("%d %d",&m,&n);
	for(i=0;i<m;i++)
		for(j=0;j<n;j++)
			scanf("%d",&a[i][j]);
	scanf("%d %d %c %d",&x,&y,&s,&k);
	des(x,y,s,k);
	printf("%d %d",p,q);
	
	return 0;
 }


 

0.0分

2 人评分

  评论区

  • «
  • »