这道题其实想法上没有什么思维局限,但是在dfs上有一个时限问题,所以需要在dfs函数中进行一定的剪枝,并且在输入上要进行循环字符输入,当然,按字典序的话,直接在刚开始就按字典序来遍历
//dfs代码如下
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
char map[50][100];
int book[50][100];
int mins[50][100];//此时的mins数组是记录在这一点时的最小步数是多少
char road[1000];
char road1[1000];
int dx[4]={
1,0,0,-1};
int dy[4]={
0,-1,1,0};
char dir[4]={
'D','L','R','U'};
int min=1000;
void dfs(int x,int y,int step)
{
int i,j,kx,ky;
if(x==29&&y==49){
if(step<min){
min=step;
for(i=0;i<min;i++){
road1[i]=road[i];
//printf("%c ",road1[i]);
}
}
return;
}
for(i=0;i<