求助dalao
  • 板块P1605 迷宫
  • 楼主黄舀啊
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/10/15 06:52
  • 上次更新2023/11/4 03:47:19
查看原帖
求助dalao
496009
黄舀啊楼主2021/10/15 06:52

样例都没过但也拿了50,我也不知道是哪里写错了

#include<bits/stdc++.h>
using namespace std;
int ans=0,a[6][6]={0},n,m,t,sx,sy,fx,fy;

void dfs(int x,int y){
	if(x==fx&&y==fy){
		ans++;
		/*for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				cout<<a[i][j]<<" ";
			}
			cout<<endl;
		}
		cout<<endl<<endl;*/
		return;
	}
	if(x+1>0&&x+1<=n&&a[x+1][y]==0){
		x++;
		a[x][y]=1;
		dfs(x,y);
		a[x][y]=0;
	}
	if(x-1>0&&x-1<=n&&a[x-1][y]==0){
		x--;
		a[x][y]=1;
		dfs(x,y);
		a[x][y]=0;
	}
	if(y-1>0&&y-1<=m&&a[x][y-1]==0){
		y--;
		a[x][y]=1;
		dfs(x,y);
		a[x][y]=0;
	}
	if(y+1>0&&y+1<=m&&a[x][y+1]==0){
		y++;
		a[x][y]=1;
		dfs(x,y);
		a[x][y]=0;
	}
} 

int main() {
	cin>>n>>m>>t;
	cin>>sx>>sy>>fx>>fy;
	if(sx<=0||sx>n||sy<=0||sy>m||fx<=0||fx>n||fy<=0||fy>m)
		{cout<<0;return 0;}
	for(int i=1;i<=t;i++){
		int  x1,y1;
		cin>>x1>>y1;
		if(x1>0&&x1<=n&&y1>0&&y1<=m)
			a[x1][y1]=2;
	}
	for(int i=0;i<=5;i++){a[i][0]=2;a[0][i]=2;}
	a[sx][sy]=1;
	dfs(sx,sy);
	cout<<ans;
	return 0;
}
2021/10/15 06:52
加载中...