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

 FZU一直交不上去 先写在这吧

 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
",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
",pow(2,num/2));
29     }
30     return 0;
31 }
32 /*
33 
34 ((??))
35 
36 */
原文地址:https://www.cnblogs.com/general10/p/5801043.html