POJ 1414 Life Line(搜索)
题意:
给定一块正三角形棋盘,然后给定一些棋子和空位,棋子序号为a(1<=a<=9),group的定义是相邻序号一样的棋子。
然后到C(1<=N<=9)棋手在空位放上自己序号C的棋子, 放完后, 不与空位相邻的group被消去, 每消去一个不是C的棋子得一分, 消去C的棋子扣一分, 问能得到最多的分数是多少。
分析:
令ans = 0;
搜索每一个棋子, 找出他的group。
如果这个group不与空位相邻, 而且棋子与棋手序号相等, 那么ans -= group数量, 如果棋子不与棋手序号相等 ans += group数量
可以不设置全局变量来找出搜索块的数量
代码:
1 #include <cstdio> 2 #include <cstring> 3 #include <ios> 4 using namespace std; 5 const int maxn = 15; 6 int N, C; 7 int dir[6][2] = { {-1, 0},{-1, -1},{0, -1},{0, 1},{1, 0},{1, 1} }; 8 bool vis[maxn][maxn]; 9 int board[maxn][maxn]; 10 bool conetZero = 0; 11 int dfs(int x, int y, int c) 12 { 13 if(board[x][y] == 0) 14 { 15 conetZero = 1; 16 return 0; 17 } 18 vis[x][y] = 1; 19 int cnt = 1; 20 for(int d = 0; d < 6; d++) 21 { 22 int tx = x, ty = y; 23 tx += dir[d][0], ty += dir[d][1]; 24 if(tx <= 0 || tx > N || ty <= 0 || ty > tx || vis[tx][ty]) 25 continue; 26 if(board[tx][ty] == c || board[tx][ty] == 0) 27 cnt += dfs(tx,ty, c); 28 } 29 return cnt; 30 } 31 int solve() 32 { 33 memset(vis, 0 , sizeof(vis)); 34 int ans = 0; 35 36 for(int i = 1; i <= N; i++) 37 for(int j = 1; j <= i; j++) 38 { 39 if(board[i][j] != 0 && !vis[i][j]) 40 { 41 conetZero = 0; 42 int temp = dfs(i,j,board[i][j]); 43 if(!conetZero){ 44 ans += board[i][j] == C ? -temp: temp; 45 } 46 } 47 } 48 return ans; 49 } 50 int main() 51 { 52 while(~scanf("%d %d", &N, &C) && N) 53 { 54 55 memset( board , 0 , sizeof(board) ); 56 57 for(int i = 1; i <= N; i++) 58 for(int j = 1; j <= i; j++) 59 scanf("%d", &board[i][j] ); 60 61 62 63 int ans = -123456; 64 65 for(int i = 1; i <= N; i++) 66 for(int j = 1; j <= i; j++) 67 { 68 if( board[i][j] == 0){ 69 board[i][j] = C; 70 ans = max( ans, solve() ); 71 board[i][j] = 0; 72 } 73 } 74 75 printf("%d\n", ans); 76 77 } 78 return 0; 79 }
转载于:https://www.cnblogs.com/Jadon97/p/7811429.html
POJ 1414 Life Line(搜索)相关推荐
- poj Best Cow Line
Best Cow Line 题意: 就是说给你一系列字母, 要你取出字典序最小的字符串,每次只能从最上面或者最下面进行取,每次从上和从下选择最小的,若相等则向中间搜索,找到较小的. 注意: 1.先吸收 ...
- J - 最强王者 POJ - 1753 Flip Game 搜索+状态压缩
J - 最强王者 POJ - 1753 Flip game is played on a rectangular 4x4 field with two-sided pieces placed on e ...
- POJ 1324 Holedox Moving 搜索
题目地址: http://poj.org/problem?id=1324 优先队列---A*的估价函数不能为蛇头到(1,1)的距离,这样会出错. 看了discuss,有大神说这题A*的估价函数为BFS ...
- POJ 1321 棋盘问题 搜索
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...
- poj 1088(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 88560 Accepted: 33212 Description ...
- POJ 1579 记忆化搜索
[问题描述] 自定义函数w(a,b,c). 如果 a ≤ 0 或b ≤ 0 或 c ≤ 0, 则返回结果: 1; 如果 a > 20 或 b > 20 或 c > 20, 则返回结 ...
- POJ 1189 记忆化搜索
钉子和小球 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7218 Accepted: 2164 Description ...
- poj 1699 Best Sequence (搜索技巧 剪枝 dfs)
题目链接 题意:给出几个基因片段,要求你将它们排列成一个最短的序列,序列中使用了所有的基因片段,而且不能翻转基因. 分析:先计算出add数组,再dfs枚举. 空间复杂度O(n*n), 最坏时间复杂度 ...
- POJ 1950 Dessert DFS 搜索
题意:输入n(1 <= n <= 15),求由1到n的数经过'+','-'或'.'三种运算后值为0的可能情况数,并输出前20组答案,若不足20组,输出全部. (10 ...
最新文章
- 简单的利用IDEA搭建SpringBoot+Maven+Mybatis+自动生成代码
- 云安全云计算 迷团大揭幕
- deepin配置反向代理映射本地到公网
- 学习SOX(1) 在VC中编译
- vue“路由懒加载” 技术,让网页快速加载 (优化篇)
- ubuntu动态截图(GIF动画)
- 聪明的苹果——iPhone 3GS。
- 酷狗音乐、艺龙旅行等42款APP被曝违规收集用户信息
- 解决shiro和quartz2 版本冲突问题
- 【Opencv系列】之显示图像以及使用鼠标截取图像局部区域进行放大
- Silverlight客户端和WCF服务器端共享类库
- MySQL 8.0 异步复制的三种方式
- Python入门--字典生成式,生成字典的公式
- LR运行负载测试场景-笔记
- 设计模式 AOP 面向切入编程
- Python+Appium+夜神模拟器安装与简单运行(1/2)
- 国家或地区内期货市场竞争格局的变迁
- python自动化通知webhook接口代码参考
- Python的全局安装源配置
- 服务器系统要用GUID还是MBR,win7mbr和guid应该选哪一个
热门文章
- [讨论]你的女朋友值多少钱?
- 《OpenCV3编程入门》学习笔记6 图像处理(四)形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽
- sqlmap使用_sqlmap从入门到精通第四章47使用EW代理导出和导入MSSQL数据
- io vivado 怎么查看ps_ZYNQ 7020学习笔记之PL侧普通信号中断PS的实验
- float最大值_float.h库
- 功能测试常用6种方法_建筑管道常用的8种连接方法
- 如何访问docker内php,docker中容器之间如何访问
- html表格中加入斜线,在HTML中显示带斜线的表格
- cocos 卡牌类_优质链游大爆发,Cocos-BCX版《恶龙必须死》有什么特别之处?
- 进程创建函数fork()和vfork()