还是50分求助,但找不到逻辑上的错误
  • 板块P1605 迷宫
  • 楼主hanzuorui
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/7/24 22:12
  • 上次更新2023/10/27 18:34:30
查看原帖
还是50分求助,但找不到逻辑上的错误
677589
hanzuorui楼主2022/7/24 22:12
#include <stdio.h>
int map[100][100],dx[4]={0,0,1,-1},dy[4]={-1,1,0,0},cnt,sx,sy,fx,fy,t,n,m,l,r;;
bool flag[100][100];
bool check(int x,int y)
{
	if(flag[x][y]==1||map[x][y]==1||x<sx||y<sy||x>fx||y>fy)
	{
		return 0;
	}
	return 1;
}
void dfs(int x,int y)
{
	if(x==fx&&y==fy)
	{
		cnt++;
		return ;
	}
	else
	{
		for(int i=0;i<4;i++)
		{
			if(check(x+dx[i],y+dy[i])==1)
			{
				flag[x+dx[i]][y+dy[i]]=1;
				dfs(x+dx[i],y+dy[i]);
				flag[x+dx[i]][y+dy[i]]=0;
			}    
		} 
	}
}
int main()
{
	scanf("%d%d%d",&n,&m,&t);
	scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
	for(int i=1;i<=t;i++)
	{
		scanf("%d%d",&l,&r);
		map[l][r]=1;
	}
	flag[sx][sy]=1;
	dfs(sx,sy);
	printf("%d",cnt);
	return 0;
} 
2022/7/24 22:12
加载中...