Fire Net

【代码超详解】HDU 1045 Fire Net(建图 + 二分图匹配) 一、题目描述 样例输入: Sample Input 4 .X.. .... XX.. .... 2 XX .X 3 .X. X.X .X. 3 ... .XX .XX 4 .... .... .... .... 0 样例输出: 5 1 5 2 4 二、算法分析说明与代码编写指导 本题的难点在于如何建立正确的图论模型。 一行、一列同时只能有一个炮,除非被墙挡住。炮弹向上下左右发射后,直到被... 阅读详情

题目:

Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a piece of wall. 

A blockhouse is a small castle that has four openings through which to shoot. The four openings are facing North, East, South, and West, respectively. There will be one machine gun shooting through each opening. 

Here we assume that a bullet is so powerful that it can run across any distance and destroy a blockhouse on its way. On the other hand, a wall is so strongly built that can stop the bullets. 

The goal is to place as many blockhouses in a city as possible so that no two can destroy each other. A configuration of blockhouses is legal provided that no two blockhouses are on the same horizontal row or vertical column in a map unless there is at least one wall separating them. In this problem we will consider small square cities (at most 4x4) that contain walls through which bullets cannot run through. 

The following image shows five pictures of the same board. The first picture is the empty board, the second and third pictures show legal configurations, and the fourth and fifth pictures show illegal configurations. For this board, the maximum number of blockhouses in a legal configuration is 5; the second picture shows one way to do it, but there are several other ways. 



Your task is to write a program that, given a description of a map, calculates the maximum number of blockhouses that can be placed in the city in a legal configuration. 

Input

The input file contains one or more map descriptions, followed by a line containing the number 0 that signals the end of the file. Each map description begins with a line containing a positive integer n that is the size of the city; n will be at most 4. The next n lines each describe one row of the map, with a '.' indicating an open space and an uppercase 'X' indicating a wall. There are no spaces in the input file. 

Output

For each test case, output one line containing the maximum number of blockhouses that can be placed in the city in a legal configuration. 

Sample Input

4
.X..
....
XX..
....
2
XX
.X
3
.X.
X.X
.X.
3
...
.XX
.XX
4
....
....
....
....
0

Sample Output

5
1
5
2
4

 

题意:

给一个n*n的地图,同一列、同一行的两个碉堡可以互相攻击(但不能透过墙),问最多能放多少个碉堡,使它们不能互相攻击。

 

思路:

用深搜,遍历整个图,在放碉堡时判断同一行同一列有没有碉堡(注意墙可以隔开);

遍历的位置用step记录,每走一个step+1;

所处的位置:行 x=step/n; 列 y=step%n;

 

代码:

#include<stdio.h>
int n,maxx;
char mp[10][10];
int pd(int x,int y)
{
	for(int i=x-1;i>=0;i--)
	{
		if(mp[i][y]=='O')
			return 0;
		if(mp[i][y]=='X')
		{
			break;
		}
	}
	for(int i=y-1;i>=0;i--)
	{
		if(mp[x][i]=='O')
			return 0;
		if(mp[x][i]=='X')
		{
			return 1;
		}
	}
	return 1;
}
void dfs(int step,int sum)
{
	if(step==n*n)
	{
		if(sum>maxx)
			maxx=sum;
		return;
	}
	else
	{
		int x,y;
		x=step/n;
		y=step%n;
		if(mp[x][y]=='.'&&pd(x,y))
		{
			mp[x][y]='O';
			dfs(step+1,sum+1);
			mp[x][y]='.';
		}
		dfs(step+1,sum);
	}
}
int main()
{
	while(scanf("%d",&n)&&n!=0)
	{
		maxx=-1;
		for(int i=0;i<n;i++)
		{
			scanf("%s",mp[i]);
		}
		dfs(0,0);
		printf("%d\n",maxx);
	}
	return 0;
}

 

.NET Core: 用 Fire & forget 模式执行无需等待的异步操作 一天,产品经理黄蓉找到程序员陈玄风。 黄蓉来到了在电脑旁忙碌的陈玄风面前,对陈玄风说,师哥啊,现在我老爸让我们在每次增加记录时,记下一条日志,以便追踪记录的更改。 陈玄风正忙得不亦乐乎,听到黄蓉的话,心里一乐,这么easy的需求,那我赶紧接了吧。边忙不迭的点头道,没问题的,师妹,交给我吧,大概需要... 哦,4个小时。 望着远去的小师妹,陈玄风好开心,终于有摸鱼时间了。 阅读详情

相关推荐

AD24-层次原理图的设计

4)在原理图关联对话框中双击需要放置方块图的子图,即激活方块图的放置,单击母图的空白处进行放置。3)设计-Create Sheet From Sheet,进入原理图关联对话框。4)放置-添加图纸入口,放置方块图的内部I/O端口并进行名称更改。2)放置-页面符,放置页面符,并执行Table完成属性设置。5)执行Ctrl+W,端口和内部I/O端口对应连接。1)创建一个工程并完成子图的每页原理图的设计。1)新建项目,创建Main原理图页。3)放置-的端口,放置方块图的端口。以上,就是层次原理图页的设计。

qq_52761962的博客 4921

RBAC权限模型

RBAC权限模型 1. 前言 权限可以理解为对资源的控制, 对web来说就是对URL访问的控制 现在使用的权限模型, 基本都是以RBAC为基础进行扩展的 2. RBAC模型 RBAC全称 Role-BasedAccess Control , 基于角色的访问控制 RBAC认为权限授权实际上是 Who What How 的问题, 即 “Who 对 What 进行 How 的操作”。是"主体"对"客体"的操作, 其中Who是权限的拥有者 (User, Role) --主体, What 是资源或对象 (Resour

chenyao的博客~ 2534

把“思考”塞进 1 KB:我用纯 C 语言给单片机手搓了一个微型 Transformer 推理引擎

摘要:本文探讨了在64KB SRAM的MCU(如STM32H743)上部署精简Transformer模型的技术方案。通过将6层Transformer压缩至1层(隐藏维度128)、4-bit KV-Cache量化等优化手段,实现了240KB Flash占用和59KB RAM峰值,推理延迟184ms(400MHz Cortex-M7),准确率96.1%。关键创新包括:手工优化矩阵乘(CMSIS-NN)、查表法Softmax/LayerNorm、权重按Tile重排提升Cache命中率(60%→94%)。

qq_74383080的博客 2922

RBAC 模型梳理

权限是资源的集合,这里的资源指的是软件中所有的内容,包括模块、菜单、页面、字段、操作功能(增删改查)等等。页面权限操作权限和数据权限。

cliffordl的专栏 1万+

Windows11 下 Detectron2 的安装与配置全攻略

本文提供了在Windows11系统下安装和配置Detectron2的完整教程。详细介绍了从环境准备、创建虚拟环境、安装PyTorch与CUDA,到修改源码、编译安装以及运行验证Demo的全过程,帮助开发者克服Windows平台上的常见问题,成功部署这一强大的计算机视觉库。

weixin_29081703的博客 246

瑞萨RH850/U2A8以太网模块mcal说明

如下所有功能的支持需要在达芬奇中开启EthGlobalTimeSupport。秒[32bit], 纳秒[32bit], 纳秒小数[20bit]每一帧发送数据的相关结构缓冲区都放在变量。每一帧接收数据的相关结构缓冲区都放在变量。

至道无难,唯嫌拣择。 1860

2022.11.30.HDU - 1045

4.X......XX......2XX.X3.X.X.X.X.3....XX.XX4................051524题意:给出一张图,图中'X'表示wall,'.'表示空地,可以放置blockhouse同一条直线上只能有一个blockhouse,除非有wall隔开,问在给出的图中最多能放置多少个blockhous。思路:开始想着构建二分图匹配,但其实没那么复杂直接深搜即可。

weixin_62802134的博客 666

CCS环境下ADC采样波形的实时可视化调试技巧

本文详细介绍了在CCS环境下实现ADC采样波形实时可视化的调试技巧。通过数组缓存优化、多通道同步显示和波形测量工具的高级用法,帮助开发者高效调试嵌入式系统中的ADC采样问题,提升信号分析的准确性和效率。

weixin_33712987的博客 419

hdu - 1045 Fire Net 二分图匹配

Problem Description Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a piece of wall. A blockhouse is a small castle that has four openings through which to

SsteelXD的博客 414

国科大学习资料--VLSI测试与可测试设计--2020期末考试试题

国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 国科大学习资料–VLSI测试与可测试设计–2020期末考试试题 一、概念题 1简述可测试性测度与两个主要的测度指标的含义; 2以March C-算法为例,说明March算法的构成,以及March C-算法的故障覆盖率; 3“效果-原因”诊断法和“原因效果诊断法”的不同; 4列举四条扫描设计时出现的问 题及解决办法; 5最少写出1149.1与1500的五点不同; = = = = =

无名何许人的博客 1150

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

Robot_PLC_HMI_Automation 1万+

Fire Net problem Python

最近发现一个联系编程语言的好方法 去做ACM的题目,用自己想学的语言去编 因为一直想学python,所以就用python了 Fire Net answer: ''' Created on 2013-1-21 @author: Administrator ''' class point: x=0 y=0 def __init__(self,x,y):

Json_Nie的专栏 932

【传感器模块项目实战】机器人/无人驾驶常用传感器模型、选型与安装

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!无人车&无人机导航合集本文先对机器人/无人驾驶常用传感器模型、选型与安装做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容分为位置式绝对型编码器增量式编码器打比赛的时候用过欧姆龙的增量式编码器,也用过待编码器的步进电机。【防盗标记–盒子君hzj】增量式编码器正交编码输出信号,用于识别正转和反转,通过微控制器(单片机)的片内外设硬件/软件解码(1)惯性器件-机械陀螺。

qq_35635374的博客 448

HDU 1045 Fire Net

Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7281 Accepted Submission(s): 4150 Problem Description Suppose that we have a sq

小寒 449

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Fire Net (二分图最大匹配)

Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a piece of wall. A blockhouse is a small castle tha...

a1046765624的博客 1883

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Fire Net JAVA版

Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16825 Accepted Submission(s): 10228 Problem Description Suppose that we have a squa...

A-lex的博客 271

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

浙大ACM 1002 Fire Net

先看看自己以前的题,找回点自己以前的思想,这题是我大一刚刚学C时写的,当时在练这题时,他们都说用搜索,但我用的是贪心,贪心一般是说找最多,这里我找的是最少,一个一个找下来,就OK了,你先找到这个点能被几个点打到,然后你就能求出最少要用几个点了。当时的代码写的是笨了点,但想法还是挺不错的。 Fire Net Time Limit: 2 Seconds      Memory Limit:

蔡斌松的专栏 962

ZOJ 1002 Fire Net 深度优先搜索算法

这道里原来我在看别人代码之前, 也写过。 洋洋洒洒的写了一个main函数四个嵌套for循环, 第一次的大手笔。运行结果没有问题, 但就是提交不上去, 还不收呢?搁置了好几天后, 没办法放弃。 后来看了一下别人的代码, 写完后提交编译错误, 都是因为跟系统函数重名缘故。  这道题的名头是,DFS(Depth-First-Search)深度优先搜索算法 #include "iostrea

fofu33的专栏 1156

【ACM】HDOJ 1045 Fire Net

HDOJ1045FireNet TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others) TotalSubmission(s):8273AcceptedSubmission(s):4753 题目描述: 一个n*n的地图,请安排blockhouse...

weixin_33834137的博客 167

ZYNQ7000上AXI-DMA实现PL-PS高效数据传输实战

AXI-DMA是Xilinx ZYNQ7000异构平台中专为PL与PS间高速数据搬运设计的硬件加速引擎,其核心原理基于AXI Stream协议与DMA控制器协同,通过Scatter-Gather描述符链、缓存一致性管理及中断聚合机制,在Linux环境下实现零拷贝、低CPU占用、确定性延迟的数据通路。相比HP Slave轮询或自定义主控驱动,AXI-DMA显著规避了DDR带宽争用、Cache错位和中断风暴等典型工程风险,成为工业级实时采集(如ADC采样、视频流)的事实标准方案。本文聚焦ZYNQ7000平台与L

weixin_34186128的博客 359
上一篇: Dating with girls(2)
下一篇: Distributing Ballot Boxes
admin__
博客等级 码龄8年 3粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值