为何不开O2第二个点输出二百多(60分),开O2却AC了呢?
  • 板块P1605 迷宫
  • 楼主ltx2007
  • 当前回复6
  • 已保存回复6
  • 发布时间2020/8/29 16:11
  • 上次更新2023/11/5 14:01:18
查看原帖
为何不开O2第二个点输出二百多(60分),开O2却AC了呢?
298059
ltx2007楼主2020/8/29 16:11
#include<bits/stdc++.h>
using namespace std;
int a[6][6],p[6][6],x1,y,x2,y2,N,M,T,ans;
void search(int n,int m) {
	if(n==x2&&m==y2) {
		ans++;
		return;
	} else {
		if(p[n+1][m]!=0&&a[n+1][m]!=1) {
			a[n][m]=1;
			search(n+1,m);
			a[n][m]=0;
		}
		if(p[n-1][m]!=0&&a[n-1][m]!=1) {
			a[n][m]=1;
			search(n-1,m);
			a[n][m]=0;
		}
		if(p[n][m+1]!=0&&a[n][m+1]!=1) {
			a[n][m]=1;
			search(n,m+1);
			a[n][m]=0;
		}
		if(p[n][m-1]!=0&&a[n][m-1]!=1) {
			a[n][m]=1;
			search(n,m-1);
			a[n][m]=0;
		}
	}
}
int main() {
	cin>>N>>M>>T;
	cin>>x1>>y>>x2>>y2;
	int b,c;
	for(int i=1; i<=N; i++) {
		for(int j=1; j<=M; j++) {
			p[i][j]=1;
		}
	}
	for(int i=1; i<=T; i++) {
		cin>>b>>c;
		p[b][c]=0;
	}
	search(x1,y);
	cout<<ans;
	return 0;
}

希望有大佬来解答

2020/8/29 16:11
加载中...