wikioi 1251--括号

题目描述:给定n个变量,求乘积的表达式的个数。相邻元素相乘需要加*号。

思路:直接递归即可,ans[i][j] = ans[i][k]+ans[k+1][j](i<=k<j);对于单个字符而言,没有括号

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<vector>
 7 #include<string>
 8 using namespace std;
 9
10
11 vector<string> ans[20][15];
12 string a[15];
13 int n;
14 void dfs(int l, int r)
15 {
16     string s;
17     if (ans[l][r].size())
18         return;
19     if (l == r)
20         ans[l][r].push_back(a[l]);
21     else
22     {
23         for (int i = l; i < r; i++)
24         {
25             dfs(l, i);
26             dfs(i + 1, r);
27             int m1 = ans[l][i].size(), m2 = ans[i+1][r].size();
28             for (int j = 0; j < m1; j++)
29             {
30                 for (int k = 0; k < m2; k++)
31                 {
32                     if (l == i && i + 1 == r)
33                         s = "(" + ans[l][i][j] + "*" + ans[i + 1][r][k] + ")";
34                     else
35                     {
36                         s = "(" + ans[l][i][j] + ans[i+1][r][k] + ")";
37                     }
38                     ans[l][r].push_back(s);
39                 }
40             }
41         }
42     }
43 }
44 int main()
45 {
46     cin >> n;
47     for (int i = 1; i <= n; i++)
48         cin >> a[i];
49     dfs(1, n);
50     int m = ans[1][n].size();
51     for (int i = 0; i < m; i++)
52         cout << ans[1][n][i] << endl;
53     return 0;
54 }

wikioi 1251--括号,布布扣,bubuko.com

时间: 2024-10-25 15:55:06

wikioi 1251--括号的相关文章

1251 括号

1251 括号 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 计算乘法时,我们可以添加括号,来改变相乘的顺序,比如计算X1, X2, X3, X4, …, XN的积,可以 (X1(X2(X3(X4(...(XN-1*XN)...))))) ::: ::: (((...(((X1*X2)X3)X4)...)XN-1)XN) 你的任务是编程求出所有这样的添括号的方案. 输入描述 Input Description 输入文件第

1251 括号(递归小练)

1251 括号 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 计算乘法时,我们可以添加括号,来改变相乘的顺序,比如计算         X1, X2, X3, X4, …, XN的积,可以 (X1(X2(X3(X4(...(XN-1*XN)...)))))  ::: ::: (((...(((X1*X2)X3)X4)...)XN-1)XN) 你的任务是编程求出所有这样的添括号的方案. 输入描述 Input Descriptio

递归:codevs 1251 括号

codevs 1251 括号 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 计算乘法时,我们可以添加括号,来改变相乘的顺序,比如计算X1, X2, X3, X4, …, XN的积,可以 (X1(X2(X3(X4(...(XN-1*XN)...))))) ::: ::: (((...(((X1*X2)X3)X4)...)XN-1)XN) 你的任务是编程求出所有这样的添括号的方案. 输入描述 Input Description 输

COdevs 1251 括号

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 计算乘法时,我们可以添加括号,来改变相乘的顺序,比如计算X1, X2, X3, X4, …, XN的积,可以 (X1(X2(X3(X4(...(XN-1*XN)...))))) ::: ::: (((...(((X1*X2)X3)X4)...)XN-1)XN) 你的任务是编程求出所有这样的添括号的方案. 输入描述 Input Description 输入文件第一行是一个数n(1<=

动态规划——区间

Wikioi 1048 石子归并 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1].问安排怎样的合并顺序,能够使得总合并代价达到最小. 输入描述 Input Description 第一行一个整数n(n<=100) 第二行n个整数w1,w2...wn  (wi <= 100) 输出描述 Output Description 一个整数表示最小合并代价 样例输入 Sample

codevs 搜索题汇总(黄金级)

2801 LOL-盖伦的蹲草计划 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 众所周知,LOL这款伟大的游戏,有个叫盖伦的英雄.他的伟大之处在于他特别喜欢蹲草丛阴人(XL:蹲草阴人也算英雄?!CZQ:没办法,个个都是这么玩的).某日,德玛西亚与诺克萨斯之间又发生了一场战斗,嘉文四世希望盖伦能带领一支K人的德玛西亚军队出战. 战斗发生在召唤师峡谷.整个召唤师峡谷被分割成M行N列的一个矩阵,矩阵中有空地和几片草丛.这几片草丛中有

SQL查询字段添加括号报错:Operand should contain 1 column(s)

SQL语句:查询连个字段的信息 SELECT (menu_id,menu_captions) FROM bsdb.menulist a WHERE a.menu_id like ('2_'); 然后,因为这是在存储过程中的一个语句所以,在执行存储过程的时候编译不会报错,但是执行的时候却汇报错:Operand should contain 1 column(s):原因不好解释: 下面是官方发解释(MYSQL):https://dev.mysql.com/doc/refman/5.0/en/row-

leetcode栈--5、valid-parentheses(有效括号)

题目描述 Given a string containing just the characters'(',')','{','}','['and']', determine if the input string is valid. The brackets must close in the correct order,"()"and"()[]{}"are all valid but"(]"and"([)]"are not.

shell中各种括号的作用

小括号里是命令大括号是变量值   一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b