杭电OJ:1010 Tempter of the Bone

这是一道搜索的题目,题目很常规,需要注意的是剪枝函数,如果剪纸剪的不好就很容易超时。

AC代码:

#include 
char maze[8][8];
int n,m,t;
bool success;
int go[][2]={
	1,0,
	-1,0,
	0,1,
	0,-1
};
void DFS(int x,int y,int time){
	for(int i=0;i<4;i++){
		int nx = x + go[i][0];
		int ny = y + go[i][1];
		if(nx < 0||nx >=n||ny<0||ny>=m)
			continue;
		if(maze[nx][ny]=='X')
			continue;
		if(maze[nx][ny] == 'D'){
			if(time + 1 ==t){
				success = true;
				return;
			}
			else continue;
		}
		maze[nx][ny] = 'X';
		DFS(nx,ny,time + 1);
		maze[nx][ny] = '.';
		if(success)
			return;
	}
}
int main(){
	//freopen("1.txt","r",stdin);
	while(scanf("%d%d%d",&n,&m,&t)!=EOF){
		if(n==0&&m==0&&t==0)
			return 0;
		for(int i=0;i


你可能感兴趣的:(算法,杭电OJ,搜索)