HDU 4414 Finding crosses(dfs)

人形机器人骨骼材料选型实战:从铝合金到碳纤维的5种方案对比 本文深入探讨人形机器人骨骼材料的选型策略,对比铝合金、镁合金、钛合金、碳纤维复合材料及3D打印材料等5种方案的性能优劣。通过建立强度-重量比、疲劳寿命等核心评价维度,结合具体应用场景,提供科学的材料决策方法论,助力开发者优化机器人结构设计,实现性能与成本的平衡。 阅读详情

Problem Description
The Nazca Lines are a series of ancient geoglyphs located in the Nazca Desert in southern Peru. They were designated as a UNESCO World Heritage Site in 1994. The high, arid plateau stretches more than 80 kilometres (50 mi) between the towns of Nazca and Palpa on the Pampas de Jumana about 400 km south of Lima. Although some local geoglyphs resemble Paracas motifs, scholars believe the Nazca Lines were created by the Nazca culture between 400 and 650 AD.[1] The hundreds of individual figures range in complexity from simple lines to stylized hummingbirds, spiders, monkeys, fish, sharks, orcas, llamas, and lizards.

Above is the description of Nazca Lines from Wikipedia. Recently scientists found out that those lines form many crosses. Do those crosses have something to do with the Christian religion? Scientists are curious about this. But at first, they want to figure out how many crosses are there. So they took a huge picture of Nazca area from the satellite, and they need you to write a program to count the crosses in the picture.

To simplify the problem, we assume that the picture is an N*N matrix made up of 'o' and '#', and some '#' can form a cross. Here we call three or more consecutive '#' (horizontal or vertical) as a "segment".

The definition of a cross of width M is like this:

1) It's made up of a horizontal segment of length M and a vertical segment of length M.
2) The horizontal segment and the vertical segment overlap at their centers.
3) A cross must not have any adjacent '#'.
4) A cross's width is definitely odd and at least 3, so the above mentioned "centers" can't be ambiguous.
For example, there is a cross of width 3 in figure 1 and there are no cross in figure 2 ,3 and 4.



You may think you find a cross in the top 3 lines in figure 2.But it's not true because the cross you find has a adjacent '#' in the 4th line, so it can't be called a "cross". There is no cross in figure 3 and figure 4 because of the same reason.
 

Input
There are several test cases.
In each test case:
The First line is a integer N, meaning that the picture is a N * N matrix ( 3<=N<=50) .
Next N line is the matrix.
The input end with N = 0
 

Output
For each test case, output the number of crosses you find in a line.
 

Sample Input
  
4 oo#o o### oo#o ooo# 4 oo#o o### oo#o oo#o 5 oo#oo oo#oo ##### oo#oo oo##o 6 ooo#oo ooo##o o##### ooo#oo ooo#oo oooooo 0
 

Sample Output
  
1 0 0 0
 

Source
 

题意:找出十字架个数

思路:列举十字架的中点,dfs时传进去方向,方便判断十字架周围是不是有#(这是不合格的)




#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)
using namespace std;
#define N 55

int ans,le,ri,up,down,temp;
int n,flag;
int step[4][2]={-1,0,1,0,0,-1,0,1};//上,下,左,右

char a[N][N];

int judge(int x,int y)
{
	if(x>=0&&x<n&&y>=0&&y<n)
		return 1;
	return 0;
}

void dfs(int x,int y,int i)
{
	temp++;
	int j;
	if(i<2) j=2;
	else
		j=0;

	int xx=x+step[i][0];
	int yy=y+step[i][1];

	if(!judge(xx,yy)) return ;

	if(a[xx][yy]=='o') return ;

	int xup=xx+step[j][0];
	int ydn=yy+step[j][1];

	if(judge(xup,ydn)&&a[xup][ydn]=='#')
		{
		   flag=1;
	       return ;
		}
	 xup=xx+step[j+1][0];
	 ydn=yy+step[j+1][1];
	if(judge(xup,ydn)&&a[xup][ydn]=='#')
		{
			flag=1;
	       return ;
		}
	dfs(xx,yy,i);
}


int main()
{
	int i,j;
	while(scanf("%d",&n),n)
	{
		for(i=0;i<n;i++)
			scanf("%s",a[i]);

		ans=0;
		for(i=0;i<n;i++)
			for(j=0;j<n;j++)
			if(a[i][j]=='#')
		{
			temp=0;
			flag=0;
			dfs(i,j,0);
			up=temp;
			temp=0;
           if(flag) continue;
			dfs(i,j,1);
			down=temp;
			temp=0;
          
          if(flag) continue;
			dfs(i,j,2);
			le=temp;
			temp=0;

            if(flag) continue;
			dfs(i,j,3);

			ri=temp;
			temp=0;

			if(flag) continue;

			if(le==ri&&down==up&&le!=1&&up!=1) //左右相等,上下相等,不能是一条线
				ans++;
		}

		printf("%d\n",ans);
	}
	return 0;
}


PCL RANSAC拟合分割多条直线【2026最新版】 使用RANSAC算法拟合分割多条直线,输出每一条直线的拟合参数到控制台,并保存直线点云到本地文件夹。博客长期更新,本文最新更新时间为:2026年5月24日。 阅读详情

相关推荐

FOFA奇技淫巧:从搜索语法到实战场景的深度挖掘

本文深入探讨了FOFA搜索语法在网络空间测绘中的高效应用,从基础语法到实战场景的深度挖掘。通过渗透测试、威胁狩猎、资产发现等实际案例,展示了如何利用FOFA精准定位目标系统、识别蜜罐、追踪威胁,并提供了合规使用指南和性能优化技巧,助力安全工作者提升效率。

weixin_32428571的博客 235

杭电 HDU 4414 Finding crosses 2012 ACM/ICPC 杭州网赛

Finding crosses Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 336    Accepted Submission(s): 212 Problem Description The Nazca Lines

lamborghini1993 1833

保姆级教程:用Protege 5.5.0从零构建你的第一个知识图谱(附实战案例文件)

本文提供了一份详细的Protege 5.5.0使用指南,从零开始构建知识图谱。涵盖环境配置、本体结构设计、实例填充到可视化展示的全流程,特别适合初学者快速掌握知识建模技术。通过实战案例演示,帮助读者理解如何定义类、属性及建立实例关系,是学习知识图谱构建的实用教程。

weixin_42548816的博客 553

HDU-4414 Finding crosses

问题描述: The Nazca Lines are a series of ancient geoglyphs located in the Nazca Desert in southern Peru. They were designated as a UNESCO World Heritage Site in 1994. The high, arid plateau stretches more than 80 kilometres (50 mi) between the towns of Nazca

m0_51727949的博客 277

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 526

在thinkBook16的win11基础上安装ubuntu22.04

背景:联想ThinkBook16 pro 32G/512G,系统盘已安装Win11,加装一条M.2-2T固态,想在2T上分一个300GB的EXT4分区,然后把ubuntu22.04安装在该分区上,并实现Win11+Linux多系统共存。 目标:实现多磁盘下分区管理的简化,优化掉一些不必要的多余的维护性质的分区。

QzmAIoT 4001

HDU 4414 Finding crosses(搜索)

题目链接:HDU 4414 Finding crosses 【题目大意】 给你一张n*n的图,由o #这两个元素组成,让我们找其中有多少十字架。 十字架由#构成 十字架的纵向长度等于横向长度 , 且这个长度要为大于等于3的奇数。 构成十字架的#周围不能有多余的# 如图1满足条件, 图二不满足,图三不满足,图四不满足, 这三个不满足的条件都是有了多余的#; ...

weixin_30954265的博客 176

SAP-ABAP: BP主数据完全指南:从基础到高阶应用

SAP-ABAP: BP主数据完全指南:从基础到高阶应用

baidu_35680696的博客 1647

HDU 4414 Finding crosses (暴力模拟)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4414 题意:在N*N的图中,找出孤立存在的十字架的个数。十字架要求为正十字,孤立表示组成十字架的‘#的周围的一格再无’#‘。 这题告诉我们,暴力也是讲究技术的。。。。 枚举十字架中心往四个方向看就行了。 #include using namespace std; i

Benjamin_Z的博客 535

【UML】第12篇 序列图(1/2)——基本概念和构成

序列图(Sequence Diagram)是一种用于显示对象之间交互的图形化表示。它描述了在特定场景下,对象之间按照时间顺序进行的消息传递和协作过程。在序列图中,对象被表示为带有垂直虚线的矩形,虚线表示对象的生命周期。对象之间的交互通过箭头表示的消息来表示,箭头从一个对象的生命线指向另一个对象的生命线,表示消息的发送和接收。

AI人人懂 3045

用ChatGPT 5.5掌握SCI的4个实操润色技巧,论文质量极速提升!(附提示词)

ChatGPT 5.5的发布,在学术写作中的应用变得更加精准和安全,通过正确的使用方法,不仅可以改善语法与表达,让论文达到SCI发表水准,还能最大程度保留作者原意,将AIGC检测率控制在低风险区间。可以帮大家省下大量纠结语法、梳理逻辑的时间,在保证润色质量的同时,兼顾AIGC检测的合规要求,为论文投稿成功率提供实实在在的提升。通过智能调整语序、优化用词和句式结构,该方法能够在保留学术质感的同时,使文章表达更自然、贴近人工撰写的风格,从而避免文字过于程式化,提升论文整体可读性和表达的个性化特征。

智能AI让学术科研更容易 64

Finding crosses (搜索)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4414Finding crosses Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1282 Accepted Submission

STILLxjy 819

嵌入式Modbus协议面试题及参考答案

Modbus 协议采用主从模式进行通信,这种模式定义明确,便于在工业环境中实现设备之间的有序数据交互。在主从模式中,存在一个主站(Master)和多个从站(Slave)。主站通常是工业控制系统中的上位机,如 PLC、工控机等,它负责发起通信请求,控制整个通信过程。从站则是各种现场设备,如传感器、执行器等,它们接收主站的请求,并根据请求进行相应的操作,然后将结果返回给主站。主站的主要功能包括:发起数据读取或写入请求、控制通信的时序和流程、处理从站返回的数据。

大模型大数据攻城狮的专栏 2042

HDU 4414 Finding crosses (DFS + BFS)

题意:在N*N的图中,找出孤立存在的十字架的个数。十字架要求为正十字,孤立表示组成十字架的‘#的周围的一格再无’#‘。 dfs找出在中心的‘#’(周围四格也为‘#'),则缩小了搜索范围,再bfs找出是否是符合要求。 #include #include #include #include #include using namespace std; char map[55][55]; i

Paradiser 1051

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Finding crosses hdu 4414 dfs

Finding crosses Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1337Accepted Submission(s): 722 Problem Description The Nazca L...

weixin_33991727的博客 247

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HDU4414 Finding crosses(模拟 || DFS)

HDU4414 Finding crosses(模拟 || DFS)

1732

hdu 4414 Finding crosses

hdu 4414 Finding crosses 数据范围这么小,随便暴搜就可以过 #include #include #include #include #include using namespace std; const int maxn=55; char mp[maxn][maxn]; vector > g; bool vis[maxn][maxn]; int

态度决定高度 636

hdoj 4414 Finding crosses

http://acm.hdu.edu.cn/showproblem.php?pid=4414 sb题啊,我wa了好久,你妹妹。。 就是暴力枚举,然后我的方法是在检查每一位的时候检查他的相邻位,是否符合条件,队友的方法是后面来次dfs、、其实都一样。。 View Code #include<iostream> #include<stdio.h> #...

149

hdu4414Finding crosses 水题

#include #include #include using namespace std ; const int maxn = 50 ; char map[maxn][maxn] ; int n ; int dx[4] = {0 , 0 , 1 , -1} ; int dy[4] = {1 , -1 , 0 , 0} ; bool judge(int x , int y) { if(x

ijbuhv的专栏 714

hdu4414 Finding crosses

题目链接:点击打开链接 题解: 题目就是判断图中有几个十字架,而且任何一个十字架周围不能有其他的字符,可以参照题目样例看。 所以在给出的矩阵周围加一圈‘o',保证判断边缘的十字架正确存在,可以挨着遍历图中每个点,出现#就分别判断这个#的四个方向,看每个方向有几个#,四个方向#数量一样不,一样的话在判断每个方向周围不存在’o'就可以了 还有一个坑就是输入n的时候,必须n不为0,否

kingsirre的博客 662

模拟-Finding crosses hdu4414 c++

简单模拟,有人用dfs写的,貌似更高端,由于测试数据不是hend

kjcsdnblog的专栏 420

HDU4414 Finding crosses

  原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=4414   暴力?   依次扫描图形,碰到"#"的时候判断是否符合“十”条件,是的话count++,并且把该“十”图形的"#"变为"o";如果不符合,也把和最开始搜到的"#"相连的"#"全部换成"o"。 View Code 1 #include <stdio.h> 2...

weixin_30950607的博客 114

hdu 4414 Finding crosses(模拟)

#include #include #include using namespace std; const int nMax = 55; int N; char map[nMax][nMax]; int ans; //int vis[nMax][nMax]; int checklr(int x, int y) { if(map[x][y] == '#' && map[x][y

937
上一篇: HDU 2504 Wang Xifeng's Little Plot (dfs 或者bfs)
下一篇: poj 1703 Find them, Catch them(并查集)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值