这个哪里错了阿?68分
  • 板块P2802 回家
  • 楼主thd21341
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/12/5 18:56
  • 上次更新2023/10/27 00:22:31
查看原帖
这个哪里错了阿?68分
829135
thd21341楼主2022/12/5 18:56
#include <stdio.h>
#define xx 1
#define yy 2
#define HP 3
#define time 4
int main (void)
{
	int move_x[4]={1,-1,0,0};
	int move_y[4]={0,0,1,-1};
	int head=0,tail=2;
	int memory[1001][10]={0};
	int n,m;
	int mark[10][10]={0};
	
	scanf ("%d %d",&n,&m);
	
	int map[10][10]={0};
	
 	for (int i=1;i<=n;i++)
	{
		for (int y=1;y<=m;y++)
		{
			
			scanf ("%d",&map[i][y]);
			
			if (map[i][y]==2)
			{
				memory[1][xx]=i;
				memory[1][yy]=y;
				mark[i][y]=1;		
			}else if (map[i][y]==3)
			{
				mark[i][y]=1;
			}
		}	
	}
			
			
	int x_now,y_now,home=0;
	int timetohome=10000;
	while(head<tail)
	{
		head++;
		printf ("%d %d\n",memory[head][xx],memory[head][yy]);
		for (int i=0;i<4;i++)
		{
			x_now=memory[head][xx]+move_x[i];
			y_now=memory[head][yy]+move_y[i];
			
			if (map[x_now][y_now]==3&&memory[tail][HP]<6)
			{
				timetohome=memory[tail][time]<timetohome?
				memory[tail][time]:timetohome;
				home=1;
			}
			if (mark[x_now][y_now]!=1&&x_now>=1&&x_now<=n&&
				y_now>=1&&y_now<=m&&map[x_now][y_now]!=0)
				{
					memory[tail][HP]=memory[head][HP]+1;memory[tail][time]=memory[head][time]+1;
					memory[tail][xx]=x_now,memory[tail][yy]=y_now;
					mark[x_now][y_now]=1;
					
					
					if(map[x_now][y_now]==4)
						memory[tail][HP]--;
					
					tail++;
				}						
		}
		
	}
	
	if (home==1)
	printf ("%d",timetohome);
	else printf ("-1");
	 
	 return 0;
}
2022/12/5 18:56
加载中...