hdu 1045 Fire Net

本文介绍了一个关于在小镇中布局机枪的问题,要求机枪不能位于同一行或同一列。通过递归与回溯的方法实现深搜算法来找到放置机枪的最大数量。

题意:在小镇上放机枪,由于某种原因(原因不重要,就是某种原因),两个机枪不能再同一行或者同一列,并且要求小(但是两个之间可以有墙)镇放最多机枪。

自我感觉这道题不像是深搜,更像是遍历+递归(这只是表面,下面会讲清楚,这就是深搜);

最开始我像跑二维数组一样深搜,但是无法判断是否该放置机枪,后来想是不是深搜+背包,但是很遗憾很难判断机枪的取舍。(这些都不重要,重要的是看下面。。)

大致方向:选取一个点,判断这个点能否放机枪,相当于同一个类的操作,所以用递归解决;

这道题的思路:1,递归的每一层遍历小镇找到一个可以放机枪的地方,然后进入下一层,在便利小镇,找到可以放置机枪的地方,直到最后一层。

2,拔掉上一层放置的机枪,重复1步骤,寻找不同的方案。(这层就要用到回溯了,递归+回溯(+本题思想)=深搜)

最好不要看代码,自己先写一遍,思路清了,就很好写的,真的,试一试。


代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
char maze[5][5];
int mark[5][5];
int n,max;


bool yes(int x,int y)
{
if(mark[x][y]==1||maze[x][y]=='X') return false;
for(int ii=x;ii<n;ii++)
{
if(mark[ii][y]==1) return false;
else if(maze[ii][y]=='X') break;
}
for(int ii=y;ii<n;ii++)
{
if(mark[x][ii]==1) return false;
else if(maze[x][ii]=='X') break;
}
for(int ii=x;ii>=0;ii--)
{
if(mark[ii][y]==1) return false;
else if(maze[ii][y]=='X') break;
}
for(int ii=y;ii>=0;ii--)
{
if(mark[x][ii]==1) return false;
else if(maze[x][ii]=='X') break;
}
return true;
}




void dfs(int num)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(yes(i,j))//可以放置机枪 
{
mark[i][j]=1;
dfs(num+1);
mark[i][j]=0;
}
}
}
if(num>max) max=num;
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
if(n==0) break;
for(i=0;i<n;i++)
{
scanf("%s",maze[i]);
}
max=0;
dfs(0);
printf("%d\n",max);
}
return 0;

下载方式:https://pan.quark.cn/s/c9b9b647468b ### 初级JSP程序设计教程核心内容解析#### 一、JSP基础概述JSP(JavaServer Pages)是由Sun Microsystems公司创建的一种动态网页技术规范,主要应用于构建动态网站及Web应用。JSP技术使得开发者能够将动态数据与静态HTML文档整合,从而实现网页内容的灵活性和可变性。##### JSP的显著特性:1. **动态与静态内容的分离**:JSP技术支持将动态数据(例如数据库查询结果、实时时间等)嵌入到静态HTML文档中。这种设计方法增强了网页的适应性和可维护性。2. **易用性**:开发者可以利用常规的HTML编辑工具来编写静态部分,并通过简化的标签技术将动态内容集成到页面中。3. **跨平台兼容性**:基于Java平台的JSP具有优良的跨操作系统运行能力,能够在多种不同的系统环境中稳定工作。4. **强大的后台支持**:JSP能够通过JavaBean组件访问后端数据库及其他资源,以实现复杂的数据处理逻辑。5. **执行效率高**:JSP页面在初次被请求时会被转换为Servlet,随后的请求可以直接执行编译后的Servlet代码,从而提升了服务响应的效率。#### 二、JSP指令的运用JSP指令用于设定整个JSP页面的行为规范。这些指令通常放置在页面的顶部,向JSP容器提供处理页面的相关指导信息。##### 主要的指令类型:1. **Page指令**: - **语法结构**:`<%@ page attribute="value" %>` - **功能**:定义整个JSP页面的运行特性,如设定页面编码格式、错误处理机制等。 - **实例**: ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值