日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FZU Problem 2030 括号问题

發布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FZU Problem 2030 括号问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Problem Description

給出一個字符串,其中包括3種字符: ‘(‘, ‘)’, ‘?’.其中?表示這個字符可以是’(‘也可以是’)’. 現在給出字符串S,你可以在’?’處填寫’(‘ 或者 ‘)’,當然隨意填寫得到的序列可能是括號不匹配的。例如”(?”,如果你填寫’(‘那么”((“是括號不匹配的! 現在你的任務是確定你有多少種填寫方案,使得最終的字符串是括號匹配的!2種方案是不同的,當2種方案中至少存在1個填寫字符是不同的。 例如,對于”((??))”,我們可以得到2種方案: “((()))”, “(()())”。

Input

數據包含多組測試數據第一行輸入一個字符串S(S的長度不超過16)。

Output

輸出一個整數,表示合法的填寫方案數。

Sample Input

((??))

Sample Output

2 講解:剛開始看這個題,你會想到括號配對,但是呢這兩個題卻又不太一樣,所以我們依然也可以采用那種方式來做的,只不過要變換一次遞歸一次,最后遞歸出來結果,下面就以例題為例子講解一下: 注意:遇見0了則不能再進性下去; 如圖所示: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 char str[1010]; 6 int len; 7 int ans; 8 void fun(int end,int k) 9 { 10 if(end==len && k==0) 11 { 12 ans++; 13 } 14 if(k<0) 15 { 16 17 } 18 else if(str[end]=='?') 19 { 20 fun(end+1,k-1); 21 fun(end+1,k+1); 22 } 23 else if(str[end]=='(') 24 { 25 fun(end+1,k+1); 26 } 27 else if(str[end]==')') 28 { 29 fun(end+1,k-1); 30 } 31 } 32 int main() 33 { 34 while(gets(str)) 35 { 36 ans=0; 37 len=strlen(str); 38 fun(0,0); 39 printf("%d\n",ans); 40 } 41 return 0; 42 }

?

轉載于:https://www.cnblogs.com/lovychen/p/3413255.html

總結

以上是生活随笔為你收集整理的FZU Problem 2030 括号问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。