甘肃省水利建设工程项目网站,公司网站建设做分录,涨粉丝1元1000个,网站没备案可以做淘宝客吗3657 括号序列 时间限制: 1 s空间限制: 256000 KB题目等级 : 黄金 Gold题解查看运行结果题目描述 Description我们用以下规则定义一个合法的括号序列#xff1a; #xff08;1#xff09;空序列是合法的 #xff08;2#xff09;假如S是一个合法的序列#xff0c;则 (S) … 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,p1); int lenastrlen(p1); for(int i1;ilena;i) f[i][i]1; for(int ilena-1;i1;--i) for(int ji1;jlena;j) { f[i][j]9999999; for(int ki;kj-1;k) { if(((p[i](p[j]))||(p[i][p[j]]))i1j) f[i][j]0; if(((p[i](p[j]))||(p[i][p[j]]))i1!j) f[i][j]min(min(f[i][j],f[i1][j-1]),f[i][k]f[k1][j]); else f[i][j]min(f[i][j],f[i][k]f[k1][j]); } } printf(%d\n,f[1][lena]); return 0; } 转载于:https://www.cnblogs.com/c1299401227/p/5370676.html