题目描述

虽然当奶牛贝里斯找到平衡序列后很高兴了,但是他现在对序列提出了一个更高的要求,就是要求每个序列中必须是先一定数量的左括号然后是与左括号相同数量的右括号。例如:(((()))),就是一个完美的平衡序列。

当贝里斯某天在农场上走的时候,他在地上发现了马蹄印,这个农场是一个N* N的方格,每个小方格中都有一个马蹄印。贝里斯希望从方格的最左上角的地方开始出发,然后每次可以向上或者向下或者向左或者向右移动一步,使得他走过的每个小方格中的马蹄印能够组成一个完美的平衡序列。当然了,贝里斯不能重复经过任何小方格。
请帮助贝里斯在这个N*N的方格中找出长度最长的完美序列的长度。

输入

第一行一个正整数N,表示农场的大小。
接下来N行,每行N个字符,表示N*N的方格上马蹄印的分布情况。

输出

只有一行一个整数,表示最长的完美序列的长度,如果不存在这样的完美序列(例如起始位置就是右括号),则输出0。

样例输入

4
(())
()((
(()(
))))

样例输出

8

分析

这题可以设l,r分别表示左括号和右括号的个数,这两个如果相等,那么就可以加起来记录长度。两边分别dfs找一下,注意判断条件(详见注释),每次max统计最大值。

上代码!

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
using namespace std;
int n,ans,p[10][10];
char a[10][10];
const int dx[5]={0,0,-1,0,1};
const int dy[5]={0,1,0,-1,0};
void dfs(int x,int y,int l,int r)
{if(l==r)//平衡 {ans=max(ans,l+r);//记录最大值 return;}for(int i=1;i<=4;i++){ int xx=x+dx[i];int yy=y+dy[i]; if(xx>0&&xx<=n&&yy>0&&yy<=n&&!p[xx][yy]){p[xx][yy]=1;//访问记录 if(a[xx][yy]=='('&&r==0)//要没有走过右括号才能走左括号 {dfs(xx,yy,l+1,r);}if(a[xx][yy]==')'){dfs(xx,yy,l,r+1);}p[xx][yy]=0;//清零,回溯 }}
}
int main()
{freopen("hshoe.in","r",stdin);freopen("hshoe.out","w",stdout); cin>>n;getchar();//防止输入错误 for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];//读入 }}p[1][1]=1;//初值if (a[1][1]==')') cout<<0;else {dfs(1,1,1,0);cout<<ans;}fclose(stdin);fclose(stdout);return 0;
}

2020寒假【gmoj1747】【马蹄印】【DFS】相关推荐

  1. 【DFS】马蹄印(Horseshoes)

    题目描述 虽然当奶牛贝里斯找到平衡序列后很高兴了,但是他现在对序列提出了一个更高的要求,就是要求每个序列中必须是先一定数量的左括号然后是与左括号相同数量的右括号.例如:(((()))),就是一个完美的 ...

  2. (纪中)1747. 马蹄印【DFS】

    (File IO): input:hshoe.in output:hshoe.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ProblemSet 题目描述 虽 ...

  3. [dfs]SSL 2493 马蹄印

    Description 虽然当奶牛贝里斯找到平衡序列后很高兴了,但是他现在对序列提出了一个更高的要求,就是要求每个序列中必须是先一定数量的左括号然后是与左括号相同数量的右括号.例如:(((()))), ...

  4. 太原益学领军2021年高考成绩查询,益学领军 | 2020寒假高三拼命班火爆进行中

    原标题:益学领军 | 2020寒假高三拼命班火爆进行中 自闭桃源称太古 欲栽大木柱长天 益学领军拼命班 名师集训树栋梁 2020寒假高三年级 授课内容 益学出尖峰 刺破青天锷未残 领军传三晋 名师集训 ...

  5. 2020.2.13普及C组 马蹄印【纪中】【dfs】

    这道题几乎是dfs模板题,还是比较好做的. #include<iostream> #include<cstdio> #include<cmath> using na ...

  6. [XUPT]2020寒假训练---比赛专题

    比赛链接:https://vjudge.net/contest/357216 说明: 比赛难度正好符合寒假训练的同学.(有一两道可能一些同学做过,我们出题没考虑到sorry) 下面对题目进行解答一下. ...

  7. #2020寒假集训#树形基础入门(Tree)代码笔记

    树的基础定义 [无根树]一棵没有固定根结点的树(树→图:无向图) (补充一)无根树可以任意指定一个节点作为根节点,将根节点"提起",其它节点自然"垂下" [无根 ...

  8. 【数据分析案例】2020年亚马逊商品评论数据分析

    亚马逊商品评论数据分析 <2020年美国数学建模竞赛C题:亚马逊商品评论数据分析>的解题思路与代码. 题目介绍 亚马逊网上商城为客户提供了对交易进行评分和评价的机会.客户可以提供三种评价内 ...

  9. 2020年亚马逊全球投入超过7亿美元,用于打击包括售假在内的欺诈行为

    亚马逊发布了2020品牌保护报告,全面沟通亚马逊如何确保全球消费者在亚马逊商城中购买到正品.亚马逊在品牌保护专业团队搭建和行业领先的机器学习技术方面进行了大量投入,以主动保护消费者.品牌及卖家免受售假 ...

最新文章

  1. 在Ubuntu上编译opencv 2.4.13源码支持android平台操作步骤
  2. Latex:表格制作全攻略
  3. VTK:vtk布尔运算隐式函数BooleanOperationImplicitFunctions用法实战
  4. 杨辉三角python_Python面试150题汇总,都是常问的面试题!
  5. fgetc与EOF的错综复杂关系
  6. android自定义工具栏,Android工具栏中的自定义图标
  7. 5.Ray-Handler之ToReadHandler编写
  8. MySQL史上最快逻辑备份工具
  9. IIS6/IIS7无法打开IIS管理器的解决方法。
  10. 仓库ERP管理系统(springboot)设计与实现,你看这篇就够了
  11. 学报格式和论文格式一样吗_学报格式
  12. 解决@Override错误
  13. ENSP实验——Telnet远程连接
  14. 阿尔弗雷德.爱因斯坦论莫扎特钢协
  15. oracle 导入设置字符集,Oracle数据导入时,字符集问题解决
  16. 设计模式-->结构型模式-->代理模式
  17. rejected from java.util.concurrent.ThreadPoolExe错误
  18. EGE五子棋(调节窗口大小,悔棋,重开,鼠标点击)
  19. 千寻位置服务器地址在哪打开,千寻位置服务器地址和端口
  20. Wine-QQ-TIM

热门文章

  1. oce专项认证 oracle_官方解密Oracle 数据库认证
  2. pv3d 打造三维全景图
  3. [转载] 杜拉拉升职记——37 整个我的人,整颗我的心
  4. 基于android智能手机的动态心电监测系统设计,基于Android智能手机的动态心电监测系统设计...
  5. 致电商小白:电商数据分析,你真的会吗?
  6. 用了那么久的手机,你还不知道这样屏蔽广告?操作只要1步
  7. markdown笔记(源码)
  8. 【附源码】计算机毕业设计java医疗物资管理系统设计与实现
  9. 瞧不上 C++ 和 D 语言,国外程序员将 5.8 万行代码迁移到 Jai 语言,到底图什么?
  10. CHM文档打开空白的解决