hdoj 1241 Oil Deposits

本文介绍了一种使用深度优先搜索(DFS)算法解决迷宫问题的方法,通过递归地探索地图上的每个可达区域,并对其进行标记来计算独立区域的数量。文章详细解释了DFS函数中的边界条件和递归调用过程。


http://acm.hdu.edu.cn/showproblem.php?pid=1241

整体思路就是扫描每一个map中字符,当然遇到'*'和已标记过的,也就是已走过的跳过,把sum传入函数中,把连同的区域都标记为当前的sum。

#include<stdio.h>
#include<string.h>
#define MAX 100
char map[MAX+10][MAX+10];
int judge[MAX+10][MAX+10];//标记 
int N,M/*N行M列*/,sum;
void DFS(int X,int Y,int J)
{
	int i,j,x,y;
	for(i=-1;i<=1;i++)
	{
	    for(j=-1;j<=1;j++)
		{
		    if(i==0&&j==0) continue;//先排除在原位置的情况/*排除走一步以后不能到达的情况*/ 
		    x=X+j;
		    y=Y+i;
			if(x>=0&&x<=N-1&&y>=0&&y<=M-1&&!judge[x][y]&&map[x][y]!='*')//当下一步可以走同时/*1.不越界 2.不走已标记的路 3.不走不通的路 
			{
			     judge[x][y]=J;
				 DFS(x,y,sum);
			}
		}
	}
}
int main()
{
	 int i,j,k;
	 while(scanf("%d %d",&N,&M)&&(N||M))
	 { 
	 	 memset(judge,0,sizeof(judge));
                 for(i=0;i<N;i++)
                 scanf("%s",map[i]);
	 	 sum=0;
	 	 for(i=0;i<N;i++)
		  for(j=0;j<M;j++)
		  if(map[i][j]!='*'&&judge[i][j]==0)
		  DFS(i,j,++sum); 
	 	 printf("%d\n",sum);
	 }
	 return 0;
}
      

DFS函数里的判断

void DFS(int X,int Y,int ...)
{
     int i,j,x,y;
     for(i=-1;i<=1;i++)
        for(j=-1;j<=1;j++)
        {
               /*1.如果只能走上下左右*/
	       if(!(i==-1&&j==0||i==0&&j==-1||i==0&&j==1||i==1&&j==0)) continue;
               //排除除上下左右以外的其他所有组合
	       /*2.如果上下左右和对角都能走*/
               if(i==0&&j==0) continue;
               //先排除在原位置的情况,也就是走一步以后只有原位置不能到达

               x=X+j;//注意这里是X+j
               y=Y+i;//注意这里是Y+i;
               
               if(x>=0&&x<=N-1&&y>=0&&y<=M-1&&!judge[x][y]&&map[x][y]!='*')
               {   //当下一步可以走同时/*1.不越界 2.不走已标记的路 3.不走不通的路 
		       sum+=1//能走一步就加一
		       DFS(x,y,sum);
	        }
           
         }   
}


【CNN-GRU-Attention】基于卷积神经网络和门控循环单元网络结合注意力机制的多变量回归预测研究(Matlab代码实现)内容概要:本文介绍了基于卷积神经网络(CNN)、门控循环单元网络(GRU)与注意力机制(Attention)相结合的多变量回归预测模型研究,重点利用Matlab实现该深度学习模型的构建与仿真。该模型通过CNN提取输入数据的局部特征,利用GRU捕捉时间序列的长期依赖关系,并引入注意力机制增强关键时间步的权重,从而提升多变量时间序列回归预测的精度与鲁棒性。文中涵盖了模型架构设计、训练流程、参数调优及实际案例验证,适用于复杂非线性系统的预测任务。; 适合人群:具备一定机器学习与深度学习基础,熟悉Matlab编程环境,从事科研或工程应用的研究生、科研人员及算法工程师,尤其适合关注时间序列预测、能源预测、智能优化等方向的技术人员。; 使用场景及目标:①应用于风电功率预测、负荷预测、交通流量预测等多变量时间序列回归任务;②帮助读者掌握CNN-GRU-Attention混合模型的设计思路与Matlab实现方法;③为学术研究、毕业论文或项目开发提供可复现的代码参考和技术支持。; 阅读建议:建议读者结合Matlab代码逐模块理解模型实现细节,重点关注数据预处理、网络结构搭建与注意力机制的嵌入方式,并通过调整超参数和更换数据集进行实验验证,以深化对模型性能影响因素的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值