题意:

给定一块正三角形棋盘,然后给定一些棋子和空位,棋子序号为a(1<=a<=9),group的定义是相邻序号一样的棋子。

然后到C(1<=N<=9)棋手在空位放上自己序号C的棋子, 放完后, 不与空位相邻的group被消去, 每消去一个不是C的棋子得一分, 消去C的棋子扣一分, 问能得到最多的分数是多少。

分析:

令ans = 0;

搜索每一个棋子, 找出他的group。

如果这个group不与空位相邻, 而且棋子与棋手序号相等, 那么ans -= group数量, 如果棋子不与棋手序号相等 ans += group数量

可以不设置全局变量来找出搜索块的数量

代码:

 #include <cstdio>
#include <cstring>
#include <ios>
using namespace std;
const int maxn = ;
int N, C;
int dir[][] = { {-, },{-, -},{, -},{, },{, },{, } };
bool vis[maxn][maxn];
int board[maxn][maxn];
bool conetZero = ;
int dfs(int x, int y, int c)
{
if(board[x][y] == )
{
conetZero = ;
return ;
}
vis[x][y] = ;
int cnt = ;
for(int d = ; d < ; d++)
{
int tx = x, ty = y;
tx += dir[d][], ty += dir[d][];
if(tx <= || tx > N || ty <= || ty > tx || vis[tx][ty])
continue;
if(board[tx][ty] == c || board[tx][ty] == )
cnt += dfs(tx,ty, c);
}
return cnt;
}
int solve()
{
memset(vis, , sizeof(vis));
int ans = ; for(int i = ; i <= N; i++)
for(int j = ; j <= i; j++)
{
if(board[i][j] != && !vis[i][j])
{
conetZero = ;
int temp = dfs(i,j,board[i][j]);
if(!conetZero){
ans += board[i][j] == C ? -temp: temp;
}
}
}
return ans;
}
int main()
{
while(~scanf("%d %d", &N, &C) && N)
{ memset( board , , sizeof(board) ); for(int i = ; i <= N; i++)
for(int j = ; j <= i; j++)
scanf("%d", &board[i][j] ); int ans = -; for(int i = ; i <= N; i++)
for(int j = ; j <= i; j++)
{
if( board[i][j] == ){
board[i][j] = C;
ans = max( ans, solve() );
board[i][j] = ;
}
} printf("%d\n", ans); }
return ;
}

POJ 1414 Life Line(搜索)的更多相关文章

  1. POJ.3279 Fliptile (搜索+二进制枚举+开关问题)

    POJ.3279 Fliptile (搜索+二进制枚举+开关问题) 题意分析 题意大概就是给出一个map,由01组成,每次可以选取按其中某一个位置,按此位置之后,此位置及其直接相连(上下左右)的位置( ...

  2. poj 3279 Fliptile (简单搜索)

    Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16558   Accepted: 6056 Descrip ...

  3. POJ 1475 Pushing Boxes 搜索- 两重BFS

    题目地址: http://poj.org/problem?id=1475 两重BFS就行了,第一重是搜索箱子,第二重搜索人能不能到达推箱子的地方. AC代码: #include <iostrea ...

  4. Remmarguts' Date POJ - 2449 (A*搜索|k短路)

    "Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. ...

  5. poj 1163 The Triangle 搜索 难度:0

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37931   Accepted: 22779 De ...

  6. poj 1426(同余搜索)

    Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26926   Accepted: 111 ...

  7. Test for Job (poj 3249 记忆化搜索)

    Language: Default Test for Job Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9733   A ...

  8. poj 1198 hdu 1401 搜索+剪枝 Solitaire

    写到一半才发现能够用双向搜索4层来写,但已经不愿意改了,干脆暴搜+剪枝水过去算了. 想到一个非常水的剪枝,h函数为  当前点到终点4个点的最短距离加起来除以2.由于最多一步走2格,然后在HDU上T了, ...

  9. POJ 1324 Holedox Moving 搜索

    题目地址: http://poj.org/problem?id=1324 优先队列---A*的估价函数不能为蛇头到(1,1)的距离,这样会出错. 看了discuss,有大神说这题A*的估价函数为BFS ...

随机推荐

  1. 通过split命令分割大文件

    场景 线上出了问题,我需要去查找log来定位问题,但是由于线上数据量庞大,这些log文件每过一个小时就会自动回滚一次,尽管如此,有的log文件依然达到了五六g以上的大小. 对于这种巨大的log文件,常 ...

  2. Appium + python自动化 - 启动app

    各种百度将Appium + python的环境搭建好后,开启移动app自动化的探索(基于Android),首先来记录下如何启动待测的app吧! 如何启动app呢?首先要获取包名,然后获取launche ...

  3. bootstrap div 固定

    div固定在顶部样式: .navbar-fixed-top div固定在底部样式 .navbar-fixed-bottom

  4. AJPFX简述JavaStringBuffer方法

    以下是StringBuffer类支持的主要方法: 序号 方法描述 1 public StringBuffer append(String s)将指定的字符串追加到此字符序列. 2 public Str ...

  5. Java并发——ThreadPoolExecutor线程池解析及Executor创建线程常见四种方式

    前言: 在刚学Java并发的时候基本上第一个demo都会写new Thread来创建线程.但是随着学的深入之后发现基本上都是使用线程池来直接获取线程.那么为什么会有这样的情况发生呢? new Thre ...

  6. java 获取ip地址

    1.使用WIFI 首先设置用户权限 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"& ...

  7. AI学习一:环境安装

    对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成 ...

  8. 在2015年 开发一个 Web App 必须了解的那些事

    在过去的一年里,我在从头开始开发我的第一个重要的Web应用.经验教会了很多以前不知道的东西,特别是在安全性和用户体验方面. 值得一提的是,我上一次尝试构建的任何合理复杂性是在2005年.所以,在安全防 ...

  9. java项目部署jar包

    1. 先将打包成jar包 2. 查看所有的java进程   pgrep java 3. 杀死进程 kill   -9 程序号 4.执行命令  nohup java -jar admin.jar > ...

  10. Django-常用设置(settings.py)

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 当前项目的根目录,Django会依此来定位工程内的相关文件 ...