poj 1164 The Castle
题目链接:
http://poj.org/problem?id=1164
题目描述:
有一个n*m的castle,有一个个小房间组成,每个房间由一个零和四面的墙组成,每个房间都有一个价值,
价值的计算方式是:west_walls价值为1,north_walls价值为2,east_walls价值为4,south_walls价值为8,
walls的价值加在一起就是这个房间的价值。先输入n,m,随后输入n*m的数字矩阵。问castle有几个房间,最大的房间多大?
解题思路:
利用二进制对每个房间的walls进行状态压缩,然后dfs转化为求连通块问题。(重点在于模型建立)
代码:
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 using namespace std; 5 6 #define N 55 7 int map[N][N], num, sum, n, m; 8 int dir[][2] = {0,-1, -1,0, 0,1, 1,0}; 9 10 void dfs (int x, int y); 11 12 int main () 13 { 14 int i, j, max; 15 while (scanf ("%d %d", &n, &m) != EOF) 16 { 17 for (i=0; i<n; i++) 18 for (j=0; j<m; j++) 19 scanf ("%d", &map[i][j]); 20 num = max = 0; 21 for (i=0; i<n; i++) 22 for (j=0; j<m; j++) 23 if (map[i][j] != -1) 24 { 25 sum = 0; 26 dfs (i, j); 27 num ++; 28 if (max < sum) 29 max = sum; 30 } 31 printf ("%d\n%d\n", num, max); 32 } 33 return 0; 34 } 35 36 void dfs (int x, int y) 37 { 38 int s = map[x][y]; 39 sum ++; 40 map[x][y] = -1; 41 for (int i=0; i<4; i++) 42 { 43 if (s % 2 == 0) 44 { 45 int a = x + dir[i][0]; 46 int b = y + dir[i][1]; 47 if (a>=0 && a<n && b<m && b>=0 && map[a][b] != -1) 48 dfs(a, b); 49 } 50 s /= 2; 51 } 52 53 }
转载于:https://www.cnblogs.com/alihenaixiao/p/4169028.html
poj 1164 The Castle相关推荐
- poj 1164城堡问题(DFS)
#include <iostream> #include <cstring> using namespace std;int R,C; //行列数 int rooms[60][ ...
- POJ 1164 放苹果 经典的组合问题
Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 ...
- ACM题集以及各种总结大全(转)
ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- POJ 超详细分类
POJ 各题算法 1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 ...
- 搜索题,留着以后慢慢刷
转过来,留着以后慢 慢 刷555.. 简单搜索 (1)深度优先搜索 (poj2488,poj3009,poj1321) (2)广度优先搜索 (poj3278,poj1426,poj3126,poj30 ...
- java判断素数1037_ACM离线题库超级全
[实例简介] 超级多的题库有离线的适合没网时做,ACMer必备,有杭电OJ,北大OJ [实例截图] [核心代码] 804f1873-5659-4f1d-bc49-31fa9b551299 └── 题库 ...
- 电子学会 青少年软件编程等级考试 C语言 5 级
5级-2020-12-01-漫漫回国路 5级-2020-12-02-装箱问题 19:装箱问题 OpenJudge - 19:装箱问题 8785:装箱问题 OpenJudge - 8785:装箱问题 1 ...
- (精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目
POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: ...
最新文章
- [原创]PipelineTools 文件传输工具
- 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)
- 基于c++的马氏距离算法代码_监控警戒区基于掩码算法的简单实现(附代码)
- 结对开发——求最大值
- GPT-3诞生,Finetune也不再必要了!NLP领域又一核弹!
- float php 运算_PHP面试经典题目
- ubuntu 18.04 ROS melodic 尝试 ROS CANOPEN 控制 AGV
- 华硕z97不识别m2固态_固态盘M.2、SATA有这样的差别,难怪大家都选“它”
- 内网监控利器——Nagios
- [图灵程序设计丛书].持续交付:发布可靠软件的系统方法.pdf
- paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt
- 【场外衍生品系列】雪球结构定价研究
- linux内核态访问串口,linux内核中串口驱动注册过程(tty驱动)[转]
- dataGrid使用deleteRow删除数据时会出现 ‘id‘ of undefined
- 如何启用计算机网络共享,无法启用共享访问,教您无法启用共享访问怎么解决...
- 一文掌握语义分割PSPNet——证件照制作、抠图(算法原理、Pytorch实现)
- 计算机传输方式:串行传输/并行传输、同步传输/异步传输、单工/半双工/全双工
- 想要申请PhD,真是路漫漫啊
- python气象处理与绘图_Python气象数据处理与绘图(18):泰勒图
- Nginx 细说proxy_set_header $remote_addr和X-Forwarded-For
热门文章
- 美团配送A/B评估体系建设与实践
- 技术债务就像俄罗斯方块,你永远都赢不了!
- 说说后台开发的一些事
- 一文读懂 Spring的前世今生
- LINUX下CPU Load Average的一点研究
- 掌握这 11 个方法论,搞定一场完美技术面试!
- 史上最全Java多线程面试题及答案
- spring security CSRF 问题 Invalid CSRF Token 'null' was found on ......
- 48.聊一聊constexpr变量
- cgi web 调用多次启动_简单说明CGI和动态请求是什么