我对dfs的理解:对每一个数据进行遍历,直到越界或者得到正确结果
通常对于一些路线问题
类型1:迷宫矩阵图类
eg1:滑雪
题目大意:让你找出从一个区域内的最长下降序列(坡度依次递减),你可以上下左右移动
思路:用深度搜素要做的就是一个个数据去搜索,因此这个过程要用到递归,也要想到终止条件是什么(递归边界),最后我们还要求取最大值
//int dx[4]={0,0,1,-1};
//int dy[4]={1,-1,0,0};//作为全局变量
int dfs(int x,int y){
if(s[x][y])return s[x][y];//记忆化搜索
s[x][y]=1;//题目中答案是有包含这个点的
for(int i=0;i<4;i++)
{ int xx=dx[i]+x;
int yy=dy[i]+y;//四个方向
if(xx>0&&yy>0&&xx<=n&&yy<=m&&a[x][y]>a[xx][yy]){
dfs(xx,yy);
s[x][y]=max(s[x][y],s[xx][yy]+1);
}
}
return s[x][y];
}
标签:dfs,int,博客,yy,xx,ACM,&&,dy 来源: https://blog.csdn.net/qq_52115728/article/details/118958578
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。