[ An Ac a Day ^_^ ] FZU 2030 括号问题 搜索

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<math.h>
 5 #include<string.h>
 6 #include<string>
 7 #include<map>
 8 #include<set>
 9 #include<vector>
10 #include<queue>
11 #define M(a,b) memset(a,b,sizeof(a))
12 using namespace std;
13 typedef long long ll;
14 char s[20];
15 int l,ans;
16 void dfs(int len,int mat){
17     if(len==l&&mat==0){
18         ans++;
19         return ;
20     }
21     if(len==l&&mat!=0) return ;
22     if(s[len]==‘(‘) dfs(len+1,mat+1);
23     if(s[len]==‘)‘) dfs(len+1,mat-1);
24     if(s[len]==‘?‘){
25         dfs(len+1,mat+1);
26         dfs(len+1,mat-1);
27     }
28 }
29
30 int main(){
31     while(gets(s)){
32         l=strlen(s);
33         ans=0;
34         dfs(0,0);
35         printf("%d\n",ans);
36     }
37     return 0;
38 }
39 /*
40
41 ((??))
42
43 */
 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<math.h>
 5 #include<string.h>
 6 #include<string>
 7 #include<map>
 8 #include<set>
 9 #include<vector>
10 #include<queue>
11 #define M(a,b) memset(a,b,sizeof(a))
12 using namespace std;
13 typedef long long ll;
14 char s[20];
15 int l,ans,cnt,num;
16 int main(){
17     while(gets(s)){
18         l=strlen(s);
19         ans=0;
20         cnt=0;
21         num=0;
22         for(int i=0;i<l;i++){
23             if(s[i]==‘(‘) cnt++;
24             if(s[i]==‘)‘) cnt--;
25             if(s[i]==‘?‘) num++;
26         }
27         num-=cnt;
28         printf("%.0lf\n",pow(2,num/2));
29     }
30     return 0;
31 }
32 /*
33
34 ((??))
35
36 */
时间: 2024-12-14 06:28:13

[ An Ac a Day ^_^ ] FZU 2030 括号问题 搜索的相关文章

fzu 2030 括号问题(DFS)

Problem 2030 括号问题 Accept: 413    Submit: 804 Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description 给出一个字符串,其中包括3种字符: '(', ')', '?'.其中?表示这个字符可以是'('也可以是')'. 现在给出字符串S,你可以在'?'处填写'(' 或者 ')',当然随意填写得到的序列可能是括号不匹配的.例如"(?",如果你填写'('那么"(

FZU 2030 括号问题

两种做法,一种dp,一种dfs,因为这个数据比较小,所以dfs全排列的方式是可以接受的,但是当比较大的时候就不行了,所以dp的方式还是要掌握一下的,我这里是dfs的做法,网上有很多人写的dp,可以去看一下,尤其是当遍历到右括号的时候的处理方式需要好好想一想 #include<iostream> #include<cstdio> #include<cstring> using namespace std; char a[20]; int len,ans,mark[20];

AC日记——逃跑的拉尔夫 codevs 1026 (搜索)

1026 逃跑的拉尔夫 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置. 那个装置太旧了,以至于只能发射关于那辆车的移动路线的方向信息. 编写程序,通过使用一张小镇的地图帮助警察局找到那辆车.程序必须能表示出该车最终所有可能的位置. 小镇的地图是矩形的,上面的符号用来标明哪儿可以行车哪儿不行.“.”表示小镇

Luogu P5658 括号树|搜索+递推

CSP2019 S组D1T2 题目链接 #include<bits/stdc++.h> using namespace std; int cc,to[600000],net[600000],fr[600000],fa[600000],zhan[600000],t,n,nt[600000]; long long s[600000]; char ch[600000];string st;bool vis[600000]; void addedge(int u,int v) { cc++; to[c

[C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ

前言 做过杭电.浙大或是北大等ACM题库的人一定对“刷题”不陌生,以杭电OJ为例:首先打开首页(http://acm.hdu.edu.cn/),然后登陆,接着找到“Online Exercise”下的“Problem Archive”,然后从众多题目中选择一个进行读题.构思.编程.然后提交.最后查看题解状态,如果AC了表示这一题被攻克了,否则就要重做了~一般情况下,“刷题”要求精神高度集中且经验丰富,否则很难成功AC,有时候甚至做一题要浪费半天的时间!(有时网速卡了,比抢火车票还要急!) 楼主在

FZU2030 括号问题(dp)

Problem 2030 括号问题 Accept: 398    Submit: 753Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description 给出一个字符串,其中包括3种字符: ‘(‘, ‘)’, ‘?’.其中?表示这个字符可以是’(‘也可以是’)’. 现在给出字符串S,你可以在’?’处填写’(‘ 或者 ‘)’,当然随意填写得到的序列可能是括号不匹配的.例如”(?”,如果你填写’(‘那么”((“是括号不匹配的!

2014 8.7 第8场个人 排位

FZU 2079  最大获利(dp) 自己很难想到,囧 dp[i]表示处理完前i 个点的最大收益.有两种情况:(1)第i 个点不投资,那么dp[i] = dp[i - 1](2)第i 个点投资,那么dp[i] = max(dp[k] + get(k + 1,i) - sigma(c[j]) (k + 1 <= j <= i))(0 < k <i)这个的意思是,[k + 1,i]点选择全部投资,所以sigma(c[j])表示每个点都投资了,get(k +1,i)的意思是,[k + 1

第十六章 Python正则表达式

正则表达式在每种语言中都会有,目的就是匹配符合你预期要求的字符串. Python正则表达式主要由re库提供,拥有了基本所有的表达式. 16.1 Python正则表达式 符号 描述 示例 . 匹配除换行符(\n)之外的任意单个字符 字符串123\n456,匹配123:1.3 ^ 匹配字符串开头 abc\nxyz,匹配以abc开头的行:^abc $ 匹配字符串结尾 abc\nxyz,匹配以xyz结束的行:xyz$ * 匹配多个 hello\nword,匹配以w开头d结尾的单词:w*d + 匹配1个或

linux配置centos的yum源本地仓库搭建

1.放置iso文件,并挂载iso文件,永久挂载,修改/etc/fstab参考:https://blog.csdn.net/qq_36119192/article/details/82222175#%E4%B8%80%EF%BC%9A%E9%85%8D%E7%BD%AE%E6%9C%AC%E5%9C%B0yum%E6%BA%90或者搜索:Linux配置yum源(本地源和网络源) - 谢公子的博客 2.到该目录/etc/yum.repos.d删除所有文件rm -rf *,并创建base.repo [