• 题目
  • 题解
  • 代码

题目

虽然当奶牛贝里斯找到平衡序列后很高兴了,但是他现在对序列提出了一个更高的要求,就是要求每个序列中必须是先一定数量的左括号然后是与左括号相同数量的右括号。例如:(((()))),就是一个完美的平衡序列。
当贝里斯某天在农场上走的时候,他在地上发现了马蹄印,这个农场是一个N*N的方格,每个小方格中都有一个马蹄印。贝里斯希望从方格的最左上角的地方开始出发,然后每次可以向上或者向下或者向左或者向右移动一步,使得他走过的每个小方格中的马蹄印能够组成一个完美的平衡序列。当然了,贝里斯不能重复经过任何小方格。

请帮助贝里斯在这个N*N的方格中找出长度最长的完美序列的长度。

数据范围:2<=N<=5

题解

数据那么小,随便搞一个深搜就好了

时间复杂度O(4n4)

 时间复杂度O(4n^4) 

代码

constdx:array[1..4]of integer=(1,0,-1,0);dy:array[1..4]of integer=(0,1,0,-1);
varc:boolean;n,i,j,max:longint;a:array[0..6,0..6]of char;b:array[0..6,0..6]of longint;procedure dfs2(x,y,s,k:longint);
vari:longint;
beginif k=s then begin c:=true;exit;end;for i:=1 to 4 doif (a[x+dx[i],y+dy[i]]=')')and(b[x+dx[i],y+dy[i]]=0) thenbeginb[x+dx[i],y+dy[i]]:=1;dfs2(x+dx[i],y+dy[i],s,k+1);b[x+dx[i],y+dy[i]]:=0;end;
end;procedure dfs(x,y,s:longint);
vari:longint;
beginif s>max div 2 thenbeginc:=false;dfs2(x,y,s,0);if c then max:=s*2;end;for i:=1 to 4 doif (a[x+dx[i],y+dy[i]]='(')and(b[x+dx[i],y+dy[i]]=0) thenbeginb[x+dx[i],y+dy[i]]:=1;dfs(x+dx[i],y+dy[i],s+1);b[x+dx[i],y+dy[i]]:=0;end;
end;beginassign(input,'hshoe.in');assign(output,'hshoe.out');reset(input);rewrite(output);readln(n);for i:=1 to n dobeginb[0,i]:=-1;b[i,0]:=-1;b[n+1,i]:=-1;b[i,n+1]:=-1;for j:=1 to n doread(a[i,j]);readln;end;b[1,1]:=1;if a[1,1]='(' then dfs(1,1,1);writeln(max);close(input);close(output);
end.

8.9 马蹄印 2493相关推荐

  1. [dfs]SSL 2493 马蹄印

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

  2. 【DFS】马蹄印(Horseshoes)

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

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

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

  4. 2020寒假【gmoj1747】【马蹄印】【DFS】

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

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

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

  6. 初一模拟赛(4.27)

    成绩: rankrankrank namenamename scorescorescore T1T1T1 T2T2T2 T3T3T3 T4T4T4 111 lyflyflyf 320320320 10 ...

  7. 大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试

    一. 前端自动化测试 大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了"人肉测试机",完全没必要自己来.但随着项目体量的增大,许多 ...

  8. 推理集 —— 特殊的工具

    如何区分一个号码是网络电话,还是普通的手机号 可简单地通过号码格式 回拨打电话是空号或占线 双面的衣服(正反两面均可穿),且颜色差异较大 ⇒ 伪装+"销毁"证物,一石二鸟: 舞台用 ...

  9. 冰河浅析 - 揭开***的神秘面纱(下)

    本文主要是探讨***的基本原理, ***的破解并非是本文的重点(也不是我的长处),具体的破解请大家期待yagami的<特洛伊***看过来>(我都期待一年了,大家和我一起继续期待吧,嘿嘿), ...

  10. 冰河浅析 - 揭开木马的神秘面纱(下)

    冰河浅析   -   揭开木马的神秘面纱(下)     作者:·   shotgun·yesky 四.破解篇(魔高一尺.道高一丈)         本文主要是探讨木马的基本原理,   木马的破解并非是 ...

最新文章

  1. Kotlin 数组的使用
  2. 电脑屏保海底世界_一款电脑桌面锁屏软件:梦幻水族馆(好多鱼)
  3. jmeter压测过程中内存溢出
  4. python编程基础_月隐学python第一课
  5. Books Queries(codeforces 1066)
  6. 完美下巴标准_平行下颚抓
  7. 服务器机房 维护,服务器机房建设与管理维护.pdf
  8. android 最新 support,android support v7 下载-android support.v7包 官方最新版 - 河东下载站...
  9. threejs 判断对象是否在可视区内
  10. 编写程序,对用户输入的n个整数,统计其最大数、最小数和平均值
  11. JDK1.8网盘链接
  12. WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
  13. import java.io后报错_【JAVA小白】 问关于做IO流作业的时候出错了,错误FileOutputStream.writeBytes...
  14. 澜起科技加速中国本土数据中心解决方案进程
  15. Excel数据转柱状图
  16. 公司企业邮箱IP被列入国际黑名单组织怎么解决
  17. 世界第一黑客:凯文.米特尼克
  18. 淘宝直通车怎样设置定向推广出价问题总结
  19. 逻辑回归算法原理及用于解决多分类问题
  20. easyExcel下载Excel

热门文章

  1. html5怎么让表格居中,HTML怎么让表格居中
  2. MacBook 管理员账户无法删除 解决方法
  3. 二叉树期CRR权定价模型-python
  4. Matplotlab可视化学习笔记(二):如何绘制柱状图
  5. SXF2019子串模糊匹配
  6. JS新特性和流行框架 - 跟着李南江学编程
  7. matlab为数据加表头,matlab xlswrite 表头
  8. 计算机体系结构量化研究方法学习(二)
  9. vue v-for实现多行等分布局-三等分
  10. android中正则表达式截取html中的video标签