求助!回溯只有60分
查看原帖
求助!回溯只有60分
671756
chenhouyuan楼主2023/7/27 11:00
#include<bits/stdc++.h>
using namespace std;
int r,c,ans,mo[5]={-1,0,1,0,-1},check[20][20];
string s[10];
void dfs(int x,int y){
	if(s[x][y]=='#')return;
	if(x==r-1&&y==c-1){
		ans=(ans+1)%10007;
		return;
	}
	for(int j=0;j<4;j++){
		if(x+mo[j]>=0&&x+mo[j]<r&&y+mo[j+1]>=0&&y+mo[j+1]<c&&!check[x+mo[j]][y+mo[j+1]]){
			check[x+mo[j]][y+mo[j+1]]=1;
			dfs(x+mo[j],y+mo[j+1]);
			check[x+mo[j]][y+mo[j+1]]=0;
		}
	}
	return;
}
int main(){
	cin>>r>>c;
	for(int i=0;i<r;i++){
		cin>>s[i];
	}
	check[0][0]=1;
	dfs(0,0);
	cout<<ans;
	return 0;
}
2023/7/27 11:00
加载中...