2017年蓝桥杯A组填空题 4.迷宫 知识点:dfs

78 阅读1分钟

4.迷宫 - 蓝桥云课 (lanqiao.cn)

用一个字符串数组按行存储地图:

#include<bits/stdc++.h>
using namespace std;
string g[10];
int vis[10][10];
int ans;

bool  sovel(int x,int y)
{
   //递归结束条件
   if(x<0||x>9||y<0||y>9)return true;
   
   //走过的位置不能再走 
   if(vis[x][y]==1)return false;
   
   vis[x][y]=1;  //当前位置标记为走过 
   switch(g[x][y])
   {
   	case 'U': return sovel(x-1,y); 
   	case 'D': return sovel(x+1,y); 
   	case 'L': return sovel(x,y-1); 
   	case 'R': return sovel(x,y+1); 
   	default : return false;
   } 
}
int main()
{
	     g[0]="UDDLUULRUL";
	     g[1]="UURLLLRRRU";
	     g[2]="RRUURLDLRD";
	     g[3]="RUDDDDUUUU";
	     g[4]="URUDLLRRUU";
	     g[5]="DURLRLDLRL";
	     g[6]="ULLURLLRDU";
	     g[7]="RDLULLRDDD";
	     g[8]="UUDDUDUDLL";
	     g[9]="ULRDLUURRR";
    
    for(int i=0;i<10;i++)
    {
    	for(int j=0;j<10;j++)
    	{
    		memset(vis,0,sizeof vis);
    		bool res=sovel(i,j);
    		
    		if(res)
    		{
    			ans++;
			}
		}
	}
cout<<ans<<endl;
return 0;	
}