求助站外ybt1251
  • 板块题目总版
  • 楼主BensonQAQ
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/5/18 21:12
  • 上次更新2023/11/4 23:05:53
查看原帖
求助站外ybt1251
284066
BensonQAQ楼主2021/5/18 21:12

代码

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int m,n,a[21][21],h[1001][4],x,y,w,v,dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};
char c[21];
void bfs(int x,int y)
{
	int head=0,tail=1;
	h[1][1]=x;
	h[1][2]=y;
	h[1][3]=0;
	a[x][y]=0;
	while(head<tail)
	{
		head++;
		for(int i=1;i<=4;i++)
		{
			int nx=h[head][1]+dx[i];
			int ny=h[head][2]+dy[i];
			if(nx>=1&&nx<=m&&ny>=1&&ny<=n&&a[nx][ny]==0&&nx!=x&&ny!=y)			
			{
				tail++;
				h[tail][1]=x;
				h[tail][2]=y;
				h[tail][3]=h[head][3]+1;
				a[nx][ny]=h[tail][3];
			}
		}
		if(a[w][v]>0)
		{
			cout<<a[w][v]<<endl;
			return ;
		}
	}
}
int main()
{
	int i,j;
	while(cin>>m>>n)
	{
		memset(a,0,sizeof(a));
		if(m==0&&n==0)
			return 0;
		for(i=1;i<=m;i++)
			gets(c);
			for(j=0;j<=n-1;j++)
			{
				if(c[j]=='#')
					a[i][j+1]=1;
				if(c[j]=='@')
				{
					x=i;
					y=j+1;
				}
				if(c[j]=='*')
				{
					w=i;
					v=j+1;
				}
			}
		}
		bfs(x,y);
	}

题目

顺便问下在哪里举报人

2021/5/18 21:12
加载中...