【dfs】马蹄印

马蹄印

题目大意:

有一个只含括号的图,要你走一条路(从左上角出发),使你走的路上的括号加在一起是先k个左括号再k个右括号组成的,要求k最大

原题:

题目描述:

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

问题描述:

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

输入

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

输出

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

输入样例

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

输出样例

8

说明

数据范围:2<=N<=5。
说明:样例中,奶牛的行走序列是这样的:

1())
2)((
345(
876)

解题思路:

因为数据太小,所以直接DFS就可以了

代码:

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
using namespace std;
int n,ans,p[10][10];
char a[10][10];
string str;
const int dx[4]={0,-1,0,1};
const int dy[4]={1,0,-1,0};
bool check(int xx,int yy)
{if (xx>0&&xx<=n&&yy>0&&yy<=n&&!p[xx][yy]) return true;//判断是否没出界,没到过return false;
}
void dfs (int x,int y,int l,int r)
{if (l==r){ans=max(ans,l+r);//已经走完了return;}for (int i=0;i<4;++i)if (check(x+dx[i],y+dy[i])){p[x+dx[i]][y+dy[i]]=1;if (a[x+dx[i]][y+dy[i]]=='('&&!r)//要没有走过右括号dfs(x+dx[i],y+dy[i],l+1,r);if (a[x+dx[i]][y+dy[i]]==')')dfs(x+dx[i],y+dy[i],l,r+1);p[x+dx[i]][y+dy[i]]=0;//清零}
}
int main()
{scanf("%d",&n);getchar();for (int i=1;i<=n;++i){cin>>str;for (int j=1;j<=n;++j)a[i][j]=str[j-1];//读入}p[1][1]=1;//初值if (a[1][1]==')') putchar(48);else dfs(1,1,1,0),printf("%d",ans);//输出
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P4852-yyf hates choukapai【单调队列优化dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4852 题目大意 给出n,m,c,dn,m,c,dn,m,c,d&#xff0c;有n∗cmn*cmn∗cm张卡牌。进行nnn次连抽mmm次单抽&#xff0c;连抽连续ccc张卡牌会获得第一张卡牌的欧气值&#xff0c;单抽可以获得抽到卡牌的欧气值。不能连续进行dd…

P4317-花神的数论题【组合数学】

正题 题目链接:https://www.luogu.com.cn/problem/P4317 题目大意 定义sum(i)sum(i)sum(i)表示iii二进制下111的个数 求∏i1nsum(i)\prod_{i1}^nsum(i)i1∏n​sum(i) 解题思路 考虑计算有iii个111的有多少个数字。 对于nnn的每一个111&#xff0c;我们可以知道如果这一位为…

【暴力】排队的奶牛

排队的奶牛 题目大意&#xff1a; 有一个序列&#xff0c;要你删去序列中的一类相同的数&#xff0c;然后求最长的相同数字段的长度 原题&#xff1a; 题目描述 农夫约翰的N只奶牛排成了一条直线&#xff0c;每只奶牛都有一个特定的标识序号&#xff0c;从左到右第i只奶牛…

NOIP2019 Emiya家今天的饭

NOIP2019 Emiya家今天的饭 ACM退役选手远程口胡 csf如今真的是太菜了,最后16分的做法愣是想了一下午 考虑使用容斥方法: 1 采用动态规划,先求出在无限制情况下,安排kkk种烹饪方法总的方案数. 记dp2[i][j]dp2[i][j]dp2[i][j]表示已经考虑完前iii种烹饪方法,共做了jjj个菜的方…

.NET Core微服务之基于Ocelot+IdentityServer实现统一验证与授权

一、案例结构总览这里&#xff0c;假设我们有两个客户端&#xff08;一个Web网站&#xff0c;一个移动App&#xff09;&#xff0c;他们要使用系统&#xff0c;需要先向IdentityService进行Login以进行验证并获取Token&#xff0c;在IdentityService的验证过程中会访问数据库以…

牛客练习赛71C-数学考试【容斥,dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/7745/C 题目大意 求一nnn的排列&#xff0c;给mmm个限制pip_ipi​表示1∼pi1\sim p_i1∼pi​不能是pip_ipi​的排列。求方案数。 解题思路 定义fif_ifi​表示1∼pi1\sim p_i1∼pi​是pip_ipi​的排列的情况下1∼pi1\sim …

【DP】景观美化

景观美化 题目大意&#xff1a; 有n个花圃&#xff0c;里面有一定的泥土&#xff0c;可以将泥土运到别的花圃&#xff0c;也可以填入&#xff0c;也可以挖出&#xff0c;现在要改变花圃中的泥土数量&#xff0c;问最少花多少钱 原题&#xff1a; 题目描述&#xff1a; 农夫…

CentOS安装使用.netcore极简教程(免费提供学习服务器)

本文目标是指引从未使用过Linux的.Neter&#xff0c;如何在CentOS7上安装.Net Core环境&#xff0c;以及部署.Net Core应用。 仅针对CentOS&#xff0c;其它Linux系统类似&#xff0c;命令环节稍加调整&#xff1b;需要提前准备好服务器地址、用户名、密码&#xff1b;如果手上…

ASP.NET Core MVC+EF Core从开发到部署

笔记本电脑装了双系统&#xff08;Windows 10和Ubuntu16.04&#xff09;快半年了&#xff0c;平时有时间就喜欢切换到Ubuntu系统下耍耍Linux&#xff0c;熟悉熟悉Linux命令、Shell脚本以及Linux下的各种应用的安装、配置、运行。使用下来的感受是Linux确实相当好使&#xff0c;…

初一模拟赛(4.27)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf320320320100100100100100100100100100202020222hkyhkyhky296296296100100100100100100868686101010333wjjwjjwjj276276276100100100909090868686000444fyfyfy24824824810010010…

P4145-上帝造题的七分钟2/花神游历各国【并查集,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P4145 题目大意 一个序列要求支持 区间开根向下取整区间求和 解题思路 一个数开根约logloglog次就会到111&#xff0c;所以我们对于每个数记录一下开根多少次会到111&#xff0c;每次修改用并查集找还没到111的暴力修改树状…

网络流及建模专题(上)

前言 不断更新中…… 这几天新坑填不下去了&#xff0c;回来回顾一些经典的模型套路&#xff0c;先拿网络流开刀&#xff0c;窃以为洛谷这几道网络流的题目还是非常具有代表性的&#xff0c;涵盖了网络流调整、多解计数、最小割、最大权闭合子图问题。 还涵盖了图论&#xff0…

基于 websocket 实现的 im 实时通讯案例

分享利用 redis 订阅与发布特性&#xff0c;巧妙的现实高性能im系统。为表诚意&#xff0c;先贴源码地址&#xff1a;https://github.com/2881099/im下载源码后的运行方法&#xff1a;运行环境&#xff1a;.NETCore 2.1 redis-server 2.8下载Redis-x64-2.8.2402.zip&#xff0…

【并查集】【图论】旅行(ssl 1312)

旅行 ssl 1312 题目大意&#xff1a; 有一个图&#xff0c;要从一个点到另一个点&#xff0c;问路上的最大值和最小值的比最小是多少 原题&#xff1a; 题目描述 Z小镇是一个景色宜人的地方&#xff0c;吸引来自各地的观光客来此旅游观光。Z小镇附近共有N个景点&#xff…

P4302-[SCOI2003]字符串折叠【区间dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4302 题目大意 一个字符串&#xff0c;对于一个字符串AAA。可以将连续的nnn个AAA缩成n(A)n(A)n(A)。求最短的长度能够表述出给定字符串 解题思路 定义fi,jf_{i,j}fi,j​表示表示出i∼ji\sim ji∼j的字符串的最短方法。那么…

ACM/ICPC 比赛生涯总结+经验分享

ACM/ICPC 比赛生涯总结经验分享 1.获奖经历 时间比赛奖励大一下ACM陕西省赛打铁大一下CCCC团队二等奖大二下ACM/ICPC全国邀请赛银奖大二下CCCC团队特等奖大三上ACM/ICPC区域赛沈阳站铜奖大三上ACM/ICPC区域赛南宁站银奖大三上ACM/ICPC EC-Final上海铜奖大三下CCCC团队特等奖大…

YbtOJ#20064-[NOIP2020模拟赛B组Day4]预算缩减【树形dp】

正题 题目链接:http://noip.ybtoj.com.cn/contest/90/problem/2 题目大意 nnn个点的一棵树&#xff0c;求删掉一些边让剩下的连通块大小不小于kkk&#xff0c;求方案数。 解题思路 定义fi,jf_{i,j}fi,j​表示iii的子树现在联通块大小为jjj时的方案数&#xff0c;我们不难发现…

【并查集】团伙(luogu 1892)

团伙 luogu 1892 代码&#xff1a; 定义对手的对手是朋友&#xff0c;朋友的朋友是朋友&#xff0c;现在有n个人和m组关系&#xff0c;如果两个人是朋友那么他们属于同一个团伙&#xff0c;问有多少个团伙 原题&#xff1a; 题目描述 1920年的芝加哥&#xff0c;出现了一…

NCC Meetup 2018 Shanghai 活动小结

NCC Meetup 2018 上海的活动于2018年6月30日在微软上海港汇办公室进行。原本计划30人规模的小型活动&#xff0c;结果收到了逾60人的报名&#xff0c;其中大部均来到现场参加了活动。本次活动得到了微软公司的场地支持&#xff0c;同时非常感谢 范亮先生、 刘浩杨先生和 邹嵩…

【结论】Array

Array 题目大意&#xff1a; 有一个数列&#xff0c;随机交换两个数&#xff0c;原数列和当前数列相同部分有可能有多少个 原题&#xff1a; 题目描述 Alice 有一个数列 ai。 但是她不喜欢这个数列&#xff0c;于是她决定随机交换其中两个数。 Alice 想知道&#xff0c;交…