hdu 1241 Oil Deposits (DFS入门)

本文介绍了一个算法挑战,旨在通过分析网格来确定不同石油沉积物的数量。输入为一系列由字符组成的网格,代表土地的不同区域,其中‘@’表示含有石油的地块,而‘*’则表示不含石油的地块。算法通过深度优先搜索来识别独立的石油沉积物。

Oil Deposits

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 33901    Accepted Submission(s): 19708


Problem Description
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then analyzes each plot separately, using sensing equipment to determine whether or not the plot contains oil. A plot containing oil is called a pocket. If two pockets are adjacent, then they are part of the same oil deposit. Oil deposits can be quite large and may contain numerous pockets. Your job is to determine how many different oil deposits are contained in a grid. 
 

Input
The input file contains one or more grids. Each grid begins with a line containing m and n, the number of rows and columns in the grid, separated by a single space. If m = 0 it signals the end of the input; otherwise 1 <= m <= 100 and 1 <= n <= 100. Following this are m lines of n characters each (not counting the end-of-line characters). Each character corresponds to one plot, and is either `*', representing the absence of oil, or `@', representing an oil pocket.
 

Output
For each grid, output the number of distinct oil deposits. Two different pockets are part of the same oil deposit if they are adjacent horizontally, vertically, or diagonally. An oil deposit will not contain more than 100 pockets.
 

Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
 

Sample Output
0 1 2 2
 

#include <stdio.h>
char map[200][200];
int n,m;
void dfs(int x,int y)
{
	if(x<0||y<0||x>=n||y>=m)return;
	if(map[x][y]=='*')return;
	map[x][y]='*';
	dfs(x+1,y);dfs(x+1,y-1);dfs(x+1,y+1);
	dfs(x-1,y);dfs(x-1,y-1);dfs(x-1,y+1);
	dfs(x,y-1);dfs(x,y+1);
}
int main(int argc, char *argv[])
{
	while(scanf("%d %d",&n,&m),n+m)
	{
		getchar();
		int i,j;
		for(i=0;i<n;i++)
		{
			scanf("%s",map[i]);
		}
		int sum=0;
		for(i=0;i<n;i++)
		{
			for(j=0;j<m;j++)
			{
				if(map[i][j]=='@')
				{				
					dfs(i,j);
					sum++;
				}
			}
		}
		printf("%d\n",sum);	
	}
	return 0;
}

因为把@变为'“*”所以不需要标记

#include <stdio.h>	
int n,m;
char map[100][100];
void dfs(int x,int y)
{
	if(x<0||y<0||x>=n||y>=m)
	return ;
	if(map[x][y]=='*')
	return ;
	map[x][y]='*';
	dfs(x+1,y);dfs(x+1,y-1);dfs(x+1,y+1);
	dfs(x-1,y);dfs(x-1,y-1);dfs(x-1,y+1);
	dfs(x,y-1);dfs(x,y+1);	
}
int main(int argc, char *argv[])
{

	while(scanf("%d %d",&n,&m),n+m)
	{
		int i,j;
		for(i=0;i<n;i++)  
        {  
            scanf("%s",map[i]);   
		}
		int sum=0; 
		for(i=0;i<n;i++)
		{
			for(j=0;j<m;j++)
			{
				if(map[i][j]=='@')
				{
					sum++;
					dfs(i,j);
				}
			}
		}
		printf("%d\n",sum);	
	} 
	return 0;
}


一、插件概述 3ds Max 智能材质检查器是一款专为3D艺术家和场景制作人员设计的高效工具,能够快速检测、诊断和修复场景中的材质与贴图问题。在复杂的3D制作流程中,材质丢失和贴图路径错误是常见的技术难题,本插件通过智能扫描和精准定位,大幅提升了场景管理的效率和可靠性。 二、 核心功能特色 1、全面材质检测系统 插件支持对整个场景或选定对象进行深度扫描,精准识别两类关键问题:完全缺失材质的模型对象和贴图文件丢失的材质。检测范围涵盖标准材质和多维子材质,确保不遗漏任何材质问题。 2、智能对象标识与定位 每个检测到的问题都会清晰显示对应的模型ID号、对象名称及具体问题描述。用户可以通过双击列表项快速选择问题对象,或使用"聚焦对象"功能将视图自动对准到选定模型,实现精准的问题定位。 3、多通道贴图检测 除了基本的漫反射贴图外,插件还全面检测环境光、高光、光泽度、自发光、不透明度、凹凸、反射、折射等多个贴图通道,确保材质设置的完整性。 4、一键修复解决方案 针对贴图丢失问题,插件提供智能修复功能。用户只需选择包含正确贴图的文件夹,系统即可自动匹配并修复所有丢失的贴图路径,支持标准材质和多维子材质的批量处理。 5、实时统计与反馈 界面底部实时显示场景统计信息,包括总对象数量、发现问题数量、无材质对象数量和贴图丢失数量,让用户对场景状态一目了然。 三、技术优势 本插件采用稳定的MAXScript开发,具有轻量级、易用性强和兼容性好的特点。通过对象handleID的唯一标识机制,确保即使在复杂场景中也能准确追踪每个问题对象。优化的算法保证了在大规模场景中的检测效率,同时详细的问题分类为后续的问题解决提供了明确的方向。 四、应用场景 该插件特别适用于场景整理、文件归档、团队协作交接、渲染前检查等关键环节,是3D制作流程中不可或缺的质量控制工具,能够有效避免因材质问题导致的渲染错误和工作延误
内容概要:本文围绕“基于高斯 Copula 框架下相位数据的传递熵基于高斯 Copula 框架下相位数据的传递熵分解研究(Matlab代码实现)分解研究”展开,结合Matlab代码实现,探讨了如何利用高斯Copula模型对相位数据间的非线性依赖关系进行建模,并在此基础上实现传递熵的分解,以量化变量之间的信息流向与贡献度。该方法在金融时间序列分析、脑电信号处理、气候系统因果推断等领域具有重要应用价值。文中提供了完整的Matlab代码实现流程,涵盖数据预处理、Copula建模、熵计算与分解等关键步骤,便于读者复现和拓展。此外,文档还列举了多个相关研究主题,如多目标优化算法在柔性作业车间调度中的对比、无人机路径规划、微网优化调度等,展示了Matlab在科研仿真中的广泛应用场景。; 适合人群:具备一定统计学、信息论与Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事复杂系统因果分析、金融风险建模或信号处理方向的研究者。; 使用场景及目标:①掌握基于Copula的非线性依赖建模方法;②理解传递熵的基本原理及其在相位数据中的分解技术;③通过Matlab代码实操提升对高斯Copula框架下信息流动分析的能力;④借鉴文中提供的多种优化算法与仿真案例,拓展自身课题的建模思路与工具应用。; 阅读建议:建议读者先熟悉Copula函数与传递熵的基础理论,再结合Matlab代码逐模块调试运行,重点关注数据标准化、联合分布构建与熵值计算部分。同时可参考文档中列出的相关研究方向,寻找交叉创新点,提升科研效率与深度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值