138.括號序列(區間型DP)

3657 括號序列

?

時間限制: 1 s
空間限制: 256000 KB
題目等級 : 黃金 Gold
題解
查看運行結果
題目描述?Description

我們用以下規則定義一個合法的括號序列:

(1)空序列是合法的

(2)假如S是一個合法的序列,則 (S) 和[S]都是合法的

(3)假如A 和 B 都是合法的,那么AB和BA也是合法的

例如以下是合法的括號序列:

(),?[],?(()),?([]),?()[],?()[()]

以下是不合法括號序列的:

(,?[,?],?)(,?([]),?([()

?現在給定一些由'(', ')', '[', ,']'構成的序列,請添加盡量少的括號,得到一個合法的括號序列。


輸入描述?Input Description

輸入包括號序列S。含最多100個字符(四種字符: '(', ')', '[' and ']') ,都放在一行,中間沒有其他多余字符。


輸出描述?Output Description

使括號序列S成為合法序列需要添加最少的括號數量。


樣例輸入?Sample Input

? ?

([()


樣例輸出?Sample Output

? ?

2


數據范圍及提示?Data Size & Hint

? ?

【樣例說明】
最少添加2個括號可以得到合法的序列:()[()]或([()])
【數據范圍】
S的長度<=100?(最多100個字符)。
代碼:
#include< iostream >
using namespace std;
char p[101];
int f[101][101];
#include< cstdio >
#include< cstring >
int main()
{
scanf("%s",p+1);
int lena=strlen(p+1);
for(int i=1;i<=lena;++i)
f[i][i]=1;
for(int i=lena-1;i>=1;--i)
for(int j=i+1;j<=lena;++j)
{
f[i][j]=9999999;
for(int k=i;k<=j-1;++k)
{
if(((p[i]=='('&&p[j]==')')||(p[i]=='['&&p[j]==']'))&&i+1==j) f[i][j]=0;?
if(((p[i]=='('&&p[j]==')')||(p[i]=='['&&p[j]==']'))&&i+1!=j)
f[i][j]=min(min(f[i][j],f[i+1][j-1]),f[i][k]+f[k+1][j]);
else f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);
}
}
printf("%d\n",f[1][lena]);
return 0;
}

轉載于:https://www.cnblogs.com/c1299401227/p/5370676.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374883.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374883.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374883.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# 執行批處理文件(*.bat)的方法代碼

代碼如下:static void Main(string[] args){Process proc null;try{ string targetDir string.Format("D:\adapters\setup");//this is where mybatch.bat liesproc new Process();proc.StartInfo.WorkingDirectory targetDir;proc.StartInfo.Fil…

C語言空格怎么表示

1.直接敲空格就行&#xff0c;或者使用ASCII碼值賦值為32。 空格沒有轉義字符。 printf("12%c45 58",32);輸出 12 45 582.合法轉義字符如下&#xff1a;\a 響鈴(BEL) 、\b 退格(BS)、\f 換頁(FF)、\n 換行(LF)、\r 回車(CR)、\t 水平制表(HT)、\v 垂直制表(VT) 0、…

Tomcat中的零停機部署(和回滾); 演練和清單

親愛的大家&#xff0c; 如果您認為Tomcat不能再進步&#xff0c;那您就錯了。 Tomcat 7引入了所謂的并行部署 。 這是由SpringSource / VMWare貢獻的。 簡而言之&#xff0c;并行部署是一種能夠并行部署一個以上版本的Web應用程序的功能&#xff0c;使所有版本都可以在完全相…

javaweb 學習資源

http://jinnianshilongnian.iteye.com/category/231099轉載于:https://www.cnblogs.com/sishahu/p/5368018.html

HDU 1863 暢通工程(最小生成樹,prim)

題意&#xff1a; 給出圖的邊和點數&#xff0c;要求最小生成樹的代價&#xff0c;注&#xff1a;有些點之間是不可達的&#xff0c;也就是可能有多個連通圖。比如4個點&#xff0c;2條邊:1-2&#xff0c;3-4。 思路&#xff1a; 如果不能連通所有的點&#xff0c;就輸出‘?’…

2000年不算在21世紀

練習3-5 輸出閏年 (15 分) 輸出21世紀中截止某個年份以來的所有閏年年份。注意&#xff1a;閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。 想當然地以為21世紀是2000~2099&#xff0c;當然沒有通過 if(N > 2000&&N < 2099){for(int i …

使用迭代器時如何避免ConcurrentModificationException

Java Collection類是快速失敗的&#xff0c;這意味著如果在使用迭代器遍歷某個線程的同時更改了Collection&#xff0c;則iterator.next&#xff08;&#xff09;將拋出ConcurrentModificationException 。 在多線程以及單線程環境下都可能出現這種情況。 讓我們通過以下示例探…

Sublime Text 3實用快捷鍵大全

下面是我通過網上教程和文本資料學習sublime Text3時收集的一些實用功能和常用快捷鍵&#xff0c;現在分享出來&#xff0c;如果還有其它的好用的功能可以在下面留言&#xff0c;以便互相學習和交流&#xff0c;謝謝&#xff01;。 選擇類 CtrlD 選中光標所占的文本&#xff0c…

Tomcat中配置JNDI數據源

準備工作&#xff1a; Tomcat版本&#xff1a;tomcat6.0以上 下例中均使用MySQL數據庫 將對應數據源的jar包和MySQL的驅動包拷貝至tomcat的lib文件夾下 一、全局數據源 1步驟一&#xff1a;配置 在tomcat下的conf/server.xml的GlobalNamingResources節點標簽中增加如下配置&…

練習3-8 查詢水果價格 (15 分)

練習3-8 查詢水果價格 (15 分) 給定四種水果&#xff0c;分別是蘋果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;單價分別對應為3.00元/公斤、2.50元/公斤、4.10元/公…

JavaFX 2.0 beta示例應用程序和思考

我有一段時間回過頭來玩JavaFX&#xff0c;并且在使用該語言方面有好有壞的經驗。 隨著JavaFX 2.0 beta的發布&#xff0c;我想嘗試一下。 在這里&#xff0c;我開發了一個簡單的地址解析應用程序&#xff0c;該應用程序將使用Google地址編碼API來獲取地址并提供該位置的緯度-經…

$Android自定義控件在不同狀態下的屬性

在寫代碼的時候&#xff0c;有時候需要控件在不同狀態下顯示不同的外觀&#xff0c;比如在按鈕按下的時候要變顏色&#xff0c;EditText獲取焦點時候邊框要變顏色等。那么下面就來梳理一下這些是怎么實現的。 &#xff08;一&#xff09;按鈕按下時候變顏色 1、在項目的drawabl…

解析DBR操作系統引導記錄數據

理解文件系統。你必須要熟悉DBR&#xff0c;下面我們就來看看文件系統解析DBR數據。 Dos Boot Record(DBR)操作系統引導記錄是由操作系統的格式化程序建立的。在文件系統驅動操作不論什么一個磁盤卷時&#xff0c;這一部分的信息將被讀取并作為文件系統在這個磁盤卷上的參數被使…

簡單冒泡排序

將5個數字按從小到大排序。 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() {int x[5] {0},temp 0;for(int i 0;i<5;i){scanf("%d",&x[i]);}//冒泡排序&#xff08;升序&#xff09;for(int j 0;j<4;j)//n個…

YouTube Java API入門

在本教程中&#xff0c;我將介紹Google的YouTube API &#xff0c;該API可讓您使用YouTube的功能來啟用應用程序。 YouTube是“殺手級”互聯網應用程序之一&#xff0c;其流量占互聯網總流量的很大一部分。 在開始之前&#xff0c;請確保您已閱讀《 API概述指南》 。 我們將主…

mysql在mac上的坑

默認端口3306&#xff1f; 正確答案&#xff1a;3307 轉載于:https://www.cnblogs.com/dudream/p/5375551.html

ServletContext圖解

servlet之間共享數據資源&#xff01; 轉載于:https://www.cnblogs.com/felixzh/p/4615902.html

C語言怎么輸出百分號%

規律&#xff1a;printf函數中&#xff0c;當出現多個%時&#xff0c;由左至右&#xff0c;每兩個%結合輸出一個% #include <stdio.h> #include <stdlib.h> #include <math.h> int main() {int c 52;printf("% \n %% \n %%% \n %%%% \n %%%%% \n %%%%…

入侵Jasper以獲取JSP頁面的對象模型

為了對我的JSP進行一些檢查和統計分析&#xff0c;我需要一個包含在其中的元素的類似于DOM的層次模型。 但是&#xff0c;解析JSP頁面并不是一件容易的事&#xff0c;最好留給它一個出色的工具-Tomcat&#xff0c;Jetty&#xff0c;GlassFish以及其他所有工具都可以使用Jasper …

Linux自動化安裝cobbler

1介紹 1.1 PXE PXE技術與RPL技術不同之處為RPL是靜態路由&#xff0c;PXE是動態路由。RPL是根據網卡上的ID號加上其他記錄組成的一個Frame&#xff08;幀&#xff09;向服務器發出請求。而服務器中已有這個ID數據&#xff0c;匹配成功則進行遠程啟動。PXE則是根據服務器端收到的…