70分,测试点2、7、8答案错误,求助大佬
  • 板块P1605 迷宫
  • 楼主jjb_coder
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/5/20 19:11
  • 上次更新2023/11/7 02:06:51
查看原帖
70分,测试点2、7、8答案错误,求助大佬
346951
jjb_coder楼主2020/5/20 19:11

尽力了一直尝试无解,谢谢各位大佬了

#include<stdio.h>
int logo[6][6]; //记录不能走的格子
int n,m; //行列
int start[2],end[2]; //起点坐标与终点坐标 
int total=0; //记录总数	
 
int dfs(int a,int b) //a,b接收当前点横纵坐标 
{
	if(a==end[0]&&b==end[1]) // 到达终点,总数加一,此次结束 
	{
		total++;
		return 1;
	}
	if(logo[a+1][b]==0&&(a+1)<=n) //一直向下走,直到不能走,注意走到边界停止 
	{
		logo[a+1][b]=1; //走过赋值为1 
		dfs(a+1,b);
		logo[a+1][b]=0; //清空赋值 
	}
	if(logo[a-1][b]==0&&(a-1)>=1)
	{
		logo[a-1][b]=1;
		dfs(a-1,b);
		logo[a-1][b]=0;
	}
	if(logo[a][b+1]==0&&(b+1)<=m)
	{
		logo[a][b+1]=1;
		dfs(a,b+1);
		logo[a][b+1]=0;
	}
	if(logo[a][b-1]==0&&(b-1)>=1)
	{
		logo[a][b-1]=1;
		dfs(a,b-1);
		logo[a][b-1]=0;
	}
}

int main(void)
{
	int t; //总障碍数
	int n1,m1;// 障碍行列 
	scanf("%d%d%d",&n,&m,&t);
	logo[start[0]][start[1]]=1; //起点表示为已走过 
	scanf("%d%d%d%d",&start[0],&start[1],&end[0],&end[1]); 
	for(int i=0;i<t;i++)
	{
		scanf("%d%d",&n1,&m1);
		logo[n1][m1]=1; //障碍赋值为1 
	} 
	dfs(start[0],start[1]); //起点开始搜索 
	printf("%d",total); 
	return 0; 
} 

2020/5/20 19:11
加载中...