zoj1002 Fire Net

ZOJ1002题——Fire Net(JAVA)   题目的大概意思就是有这样一块n*n的空地,每一小块儿代表一块空位或者一堵墙。图上的白色正方形代表空位,黑色正方形代表墙。圆形代表的是堡垒,每个堡垒可以攻击上下左右四个方向整排的其它堡垒,但是墙可以挡住堡垒的攻击。然后现在问在给定的一个地形当中最多可以放多少个堡垒且不会互相攻击。输入数据  输入数据包括了一个或多个地形的描述,用0代表输入数据结束。每一块地图的描述第一个数据是一个正整数,代表了这... 阅读详情
  1. //zoj1002 Fire Net
  2. //Accepted 1002 C++ 00:00.01 436K
  3. #include <stdio.h>
  4. int n;
  5. int max;
  6. char map[5][5];
  7. bool canput(int x, int y)
  8. {
  9.        int i,j;
  10.        if (map[x][y]!='.') return false;
  11.        for (i=x+1; i<n; i++){
  12.               if (map[i][y]=='X') break;
  13.               if (map[i][y]=='O') return false;
  14.        }
  15.        for (i=x-1; i>=0; i--){
  16.               if (map[i][y]=='X') break;
  17.               if (map[i][y]=='O') return false;
  18.        }
  19.        for (j=y+1; j<n; j++){
  20.               if (map[x][j]=='X') break;
  21.               if (map[x][j]=='O') return false;
  22.        }
  23.        for (j=y-1; j>=0; j--){
  24.               if (map[x][j]=='X') break;
  25.               if (map[x][j]=='O') return false;
  26.        }
  27.        return true;
  28. }
  29. bool finish()
  30. {
  31.        for (int i=0; i<n; ++i)
  32.               for (int j=0; j<n; ++j)
  33.                      if (canput(i,j))
  34.                             return false;
  35.        return true;
  36. }
  37. void backtrack(int num)
  38. {
  39.        if (finish()){
  40.               if (num>max) max = num;
  41.               return ;
  42.        }
  43.        for (int i=0; i<n; ++i)
  44.               for (int j=0; j<n; ++j)
  45.                      if (canput(i,j)){
  46.                             map[i][j] = 'O';
  47.                             backtrack(num+1);
  48.                             map[i][j] = '.';
  49.                      }
  50. }
  51. void solve()
  52. {
  53.        getchar();
  54.        for (int i=0; i<n; ++i){
  55.               for (int j=0; j<n; ++j)
  56.                      scanf ("%c",&map[i][j]);
  57.               getchar();
  58.        }
  59.        max = 0;
  60.        backtrack(0);
  61.        printf ("%d/n",max);
  62. }
  63. int main()
  64. {
  65. #ifdef ONLINE_JUDGE
  66. #else
  67.        freopen("1002.txt","r",stdin);
  68. #endif
  69.        while (scanf("%d",&n)!=EOF && n)
  70.               solve();
  71. #ifdef ONLINE_JUDGE
  72. #else
  73.        fclose(stdin);
  74. #endif
  75.        return 0;
  76. }
ZOJ1002 Fire Net(二分图匹配) 这道题的预处理有点恶心,自己没写出来,参考了一下别人的代码 题目大意: 有一个N*N(N     地图 最大合法放置方案(不唯一)  一种合法但不最大方案       不合法方案 输入: 第1行:一个整型变量N 第2-N+1行:城市的构造('X'表示墙,'.'表示街道) 多组测试数据,以N=0结束。 输出: 对于每组测试数据仅输出一行,即能放置的最大碉堡数。 样例 阅读详情

相关推荐

C++游戏开发实战:从零构建局域网联机对战系统(附完整代码解析)

本文详细介绍了如何使用C++开发局域网联机对战游戏系统,涵盖从环境搭建到实战代码解析的全过程。重点讲解了Winsock库的应用、Socket通信原理、服务端与客户端开发技巧,以及性能优化和安全防护方案,帮助开发者快速掌握C++游戏开发的核心技术。

weixin_42524945的博客 444

杭电1045(zoj1002)Fire Net

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

hpuzsk的博客 905

使用Dify搭建音频文件转文本工作流

使用Dify搭建音频文件转文本工作流

zyx_bx的博客 5623

zoj 1002 Fire Net(DFS~ 哈哈哈哈,终于过了!!!)

<br />1002 从一开始做ACM就郁闷的一道题,在1001下面它应该觉得压力很大啊!!哈哈。。<br /> <br />做完八皇后,党说这个能做了。。。<br /> <br />嘿嘿。这题是找放置最多数目的blockhouses(碉堡。。)使之不能同行同列,除非中间有个FIRENET。。。(同行同列就打中了。。)<br /> <br />开始想得比较复杂,按八皇后的思想,一行一行找,效果不好,一直不对,想明白了,一行不一定就放一个,一行也不一定放啊。。。当然,不放肯定全是防火墙了。。。<br /> <

小媛在努力~ 1万+

Java黑皮书课后题第5章:*5.9(找出得最高分的前两个学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生

*5.9(找出得最高分的前两个学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生名字、次高分的学生名字题目题目概述next()读取一个字符与nextLine()读取一行破题代码 题目 题目概述 *5.9(找出得最高分的前两个学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生名字、次高分的学生名字 使用Scanner类的next()方法而不是nextLine()方法来读取名字 next()读取一个字符与nextLine()读取一行 举个例子理

weixin_46356698的博客 2154

Android SystemUI——自定义状态栏和导航栏(十二)

通过前面的文章内容,我们了解了Android系统原生的状态栏StatusBar和车载系统状态栏CarStatusBar的启动流程以及视图构建流程,这里我们来简单的看一下自定义状态栏和导航栏视图的实现流程。

小旭的专栏 2011

【二分图匹配】zoj1002Fire Net

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1002 题目描述:对一个给定的n*n的地图,放入炮塔,使得它们之间不冲突。当它们在同一行或同一列时且中间没有障碍物,冲突。求最多能放入多少炮塔。二分图匹配经典模型。#include <iostream> #include <cstdio> #include <cstring>

蒟蒻的奋斗史 1292

(三)UPF之Domain Coverage Relationship(Cover、Equivalent、Independent)

整个Soc架构中一般会存在多个Power Domain,不同的Power Domain之间也存在着一定的Coverage关系。在Cadence工具中,这种。不同的Domain Coverage关系中,各个Domain存在着一定的关联()。

Mr.翟的博客 1424

ZOJ-1002 Fire Net

//这道题太经典了,刚开始还不晓得怎么做,然后看看解题报告,秒懂。。。。。,很难想到的就是以k从1到n*n递增,k/n表示x轴坐标,k%n表示y轴坐标。 AC代码: #include #include #define max 12 char map[max][max]; int n,sum; int can(int x,int y) { int i; for(i=x-1;i

小马的博客 923

AI智算-K8s+vLLM & Ray:DeepSeek-r1 671B 满血版分布式推理部署实践

自从上次发布 【AI-智算】K8s+SGLang实战:DeepSeek-r1:671b满血版多机多卡私有化部署全攻略] 文章后,本次将演示另一个主流推理引擎工具——vLLM,结合K8s、LWS、Ray、Volcano等技术栈,部署DeepSeek-r1 671b 满血版分布式推理集群,并对比其与SGLang推理引擎的性能表现。

Kason_iWiki 1825

ROS与深度相机入门教程:(1)Ubuntu16.04 在ROS中驱动Intel D435i深度相机

Intel在Github上开源了支持所有RealSense系列相机的SDK,包括了D400、SR300系列深度相机和T265双目跟踪相机,支持Linux、Windows、Mac OS以及Android,链接:https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md#installin...

m0_37957160的博客 2075

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

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

fofu33的专栏 1156

MCU-内部flash模拟成EepRom(重新梳理)

通过fee写数据Data的过程中,数据会mapping一个虚拟地址,这个虚拟地址就是你的身份,在向flash写数据的过程中会写入很多相同虚拟地址的不同数据,在读取或切页的过程中,遍历数据只会认为最下面第一个的虚拟地址所持有的数据是有效数据,其他的都是老数据,可以丢弃。模拟成eeprom的两个eep_page写数据逻辑就是,先在eep_page0写数据,eep_page0写满后,将eep_page0的有效数据copy到eep_page1,之后擦eep_page0;

xiandang8023的博客 711

ZOJ 1002 Fire Net

简而言之,生成所有可能的碉堡放置方案,并通过判断每个方案是否合法,来寻找最大合法的碉堡数量。这个方法充分利用了暴力搜索和回溯的思想,通过递归遍历所有配置,最终找出最优解。

wuqingshun314159的博客 1148

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ZOJ1002-Fire Net

行 / 列 0 1 2 3 0 0 1 2 3 1 4 5 6 7 ...

kt1776133839的博客 314

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[ZOJ1002] Fire Net

题目链接: 走这里 题目分析: 联想到Asteroids这道题,将行和列分别作为二分图的两边的点,把点本身作为二分图的边去处理 那么这个题的限制条件打不穿的墙怎么处理呢,发现这样的话 \[ ...X.. \] 其实左边那段和右边那段在横着考虑的时候是互不影响的,不妨对行和列重新编号 用一下某题解的剪枝讲解的图,样例第一个大概就是这个样子 然后对于每个空地的行编号和列编号连一条边,当空地...

kma_093 288

ZOJ 1002 Fire Net Solution

static int solve(int map[][],int size){ if(size == 0) return 0; int result = 0; for(int row = 0; row < size; row++) for(int column = 0;column < size; column++){ if(map[row][column] == 0){

Sunny 1298

ZOJ 1002 Fire Net —— C++

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...

点滴博客 415

ZOJ1002Fire net C++

Fire Net Time Limit: 2000 msMemory Limit: 65536 KB 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

qjsssss的博客 434

ZOJ-1002 Fire Net

题目链接:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827364501 【题目大意】 n行n列的地图,地图中黑色格子代表墙壁(输入样例中的‘X’),可以挡住子弹。地图中的白色格子代表空地(输入样例中的’.’),可放置碉堡。碉堡可以发射子弹,被子弹射中的碉堡将会被摧毁。现需在地图中放置碉堡,放置要求如下:任意两个碉堡之间不能相互摧毁,即相同行和相同列都不能出现两个及两个以上碉堡,除非碉堡之间有墙壁阻挡子弹。在以上要求下,求在给定地图中能

qq_51776588的博客 825

ZOJ1002 Fire Net

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1002 #include&lt;stdio.h&gt; #define true 1 #define false 0 char map[4][4]; int vis[4][4]; int max,count; int n; int is_ok(int a,...

Suda_cake的博客 443

[题解] ZOJ1002 -- Fire Net

Java复习

kradnangel的专栏 991

zoj 1002 Fire Net

用dfs来做~~但注意每次dfs回来后需要恢复到进入dfs前的状态。。。   /** map 0表示无wall houseblock 1表示 houseblock -1表示wall flagr 0 表示指定行无wall houseblock 1表示指定行有houseblock -1表示指定行有wall 当指定行有wall时,优先级最高,一定为

YYlxid————Nothing is possible if not try~ 1246
上一篇: zoj1028 Flip and Shift
下一篇: zoj1003 Crashing Balloon
fairylan
博客等级 码龄21年 2粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值