题目链接~~>
思路:先用 dfs( ) 找钥匙,再用 bfs( ) 找门(如果在找钥匙或找门的过程中发现宝藏则结束),找到门时看一下钥匙是否足够,如果打开一扇门接着 dfs( ) 去寻找钥匙(有可能打开一扇门里面有钥匙),一直寻找完。
代码:
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std ;
int n,m,f,mkey ; // mkey 找到钥匙的数量
int g[10],vis[25][25],vix[25][25][100] ; // 广搜时每增加一个钥匙就可以走回头路
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1} ; //......
阅读全文