zoj 1002 Fire Net(DFS~ 哈哈哈哈,终于过了!!!)
1002 从一开始做ACM就郁闷的一道题,在1001下面它应该觉得压力很大啊!!哈哈。。
做完八皇后,党说这个能做了。。。
嘿嘿。这题是找放置最多数目的blockhouses(碉堡。。)使之不能同行同列,除非中间有个FIRENET。。。(同行同列就打中了。。)
开始想得比较复杂,按八皇后的思想,一行一行找,效果不好,一直不对,想明白了,一行不一定就放一个,一行也不一定放啊。。。当然,不放肯定全是防火墙了。。。
照党说的,全搜得了,原来是一行一行搜的,现在是一个一个搜,如果可以放(即满足条件),就标记。。。剩下的就是普通DFS做法了。
做完很有成就感 (*^__^*) 嘻嘻…… 终于把这个拿下了 /(^o^)/
#include <stdio.h> #include <stdlib.h> #include <iostream> #include <memory.h> using namespace std; int visit[10][10],mmax,n,cou; //visit里,0是啥都没放,1是放了碉堡,2是放了防火墙 //cou计数放的个数,mmax记录最大cou的最大值,即题目要求值 int find(int x,int y) // 判断是否可以放置 { for(int i=y; i>=1; i--) //四个循环,从点(X,Y)上下左右判断,如果有碉堡,返回0,如果有墙,继续下个循环。 { if( visit[x][i] == 1 ) return 0; if( visit[x][i] == 2 ) break; } for(int i=y; i<=n; i++) { if( visit[x][i] == 1 ) return 0; if( visit[x][i] == 2 ) break; } for(int i=x; i>=1; i--) { if( visit[i][y] == 1 ) return 0; if( visit[i][y] == 2 ) break; } for(int i=x; i<=n; i++) { if( visit[i][y] == 1 ) return 0; if( visit[i][y] == 2 ) break; } return 1; } // DFS void DFS() { if( cou > mmax ) mmax = cou; for(int k=1; k<=n; k++) for(int h=1; h<=n; h++) if( !visit[k][h] && find(k,h) ) { visit[k][h] = 1; cou++; DFS(); visit[k][h] = 0; cou--; } } int main(void) { char str[10]; while( cin >> n && n) { mmax = 0; cou = 0; for(int i=1; i<=n; i++) { cin >> str; for(int k=0; k<n; k++) visit[i][k+1] = (str[k] == 'X' ? 2 : 0 ); } DFS(); cout << mmax << endl; } return 0; }
zoj 1002 Fire Net(DFS~ 哈哈哈哈,终于过了!!!)相关推荐
- zoj 1002 Fire Net 碉堡的最大数量【DFS】
题目链接 题目大意: 假设我们有一个正方形的城市,并且街道是直的.城市的地图是n行n列,每一个单元代表一个街道或者一块墙. 碉堡是一个小城堡,有四个开放的射击口.四个方向是面向北.东.南和西.在每一个 ...
- poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)
Sum It Up Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Sub ...
- 碉堡了的kotlin扩展函数
//下面的方法存在于一个方法体中 // var isContainQSSQ2 = "ddddd2".isContainerQSSQ()//there not isContainer ...
- POJ ZOJ题目分类
POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...
- POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)
水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法: (1)枚举 (1753,2965) (2)贪心(13 ...
- ZOJ 题目分类,学校的一个巨巨做的。
DP: 1011 NTA 简单题 1013 Great Equipment 简单题 1024 Calendar ...
- NOIP 好题推荐(DP+搜索+图论)POJ ZOJ
NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS) 1090 Chain ->格雷码和二进制码 ...
- ACM POJ 题目分类(完整整理版本)
DP: 1011 NTA 简单题 1013 Great Equipment 简单题 1024 Calendar Game 简单题 ...
- pku,zju题目分类
哎呦喂,直接ctrl+A了.话说浙江大学的题还见过的呢.. 公告: [意见反馈][官方博客] ural pku Zju 题目分类 收藏 感谢 mugu 的提供.... Ural Problem ...
最新文章
- 2022-2028年中国麻纺织业投资分析及前景预测报告
- Spring Cloud Config-Git后端
- JSP指令与动作——include forward param
- DB2 V8,V9并存在同一 server 的处理
- 如何使用html和css,如何使用html和css制作这个div?
- js,jquery字符串转换json,兼容各种浏览器
- jq关于对象类型的判断
- 实现对gridview删除行时弹出确认对话框的四种方法
- 首期openGauss训练营结营,48个FAQ和全部PPT通通给你,随附62人结营学员名单
- 《数据结构与算法 Python语言描述》 读书笔记
- iPhone 13 Pro苍岭绿真机首曝!网友:这次iPhone被渲染图坑惨了
- C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==header“
- 数据分析学习笔记—python简单操作EXCEL
- IOCP线程池的开发-(2)
- 选择BI工具需注意什么
- 微软 Fluent 设计体系, Fluent UI
- cd linux如何连接wifi,cdlinux万能无线系统使用教程
- 简述软件测试自动化的作用,什么是自动化测试?了解一下~
- linux 查看链接文件,Linux下的链接文件详解
- 使用U盘重装MacBook Air时用到的工具和镜像
热门文章
- Excel常用办公技巧(持续更新)
- 密歇根计算机科学与工程硕士录取,美国工科牛校UMich密歇根大学电子工程EE硕士录取...
- 秘密潜入1-榴弹枪射速修改-Python源码
- 全球首颗量子卫星炼成记:“墨子号”打造保密通信新产业
- Linux驱动|rtc-hym8563移植笔记
- Kyan 网络监控设备 hosts 账号密码泄露漏洞
- 休假管理系统——设计类图
- 虫师selenium3+python自动化测试电子版_Selenium3 Java自动化测试实战 第三版.pdf
- Hive的安装与配置——第1关:Hive的安装与配置
- 最能拉出同行差距的细节,99%的零售店老板都错过了