字符串加括号问题(矩阵乘法组合问题)C++
矩阵乘法加括号问题
给定一个长度的字符串,很明显是可以加括号(矩阵乘法的结合律)
所以,一共有多少种加括号的方式呢?
给出了计算总共有多少这样组合
例如:
下面这个串,输入的长度为4。
ABCD
所有的加括号的可能就是
A(B(CD))
A((BC)D)
(AB)(CD)
(A(BC))D
((AB)C)D
所以说,输出的结果是5.
递归版本
#include <iostream>
using namespace std;
int f(int len);
int main() {int n;while (cin >> n && n) {cout << f(n) << endl;}
}int f(int len) {if (len == 1) return 1;int sum = 0;for (int i = 1; i < len; ++i) {sum += f(i) * f(len - i);}return sum;
}
输出结果:
在计算到21的时候就会出现问题了,不过估计是因为int整数型不够放的原因。
1
1
2
1
3
2
4
5
6
42
7
132
8
429
9
1430
10
4862
11
16796
12
58786
13
208012
14
742900
15
2674440
16
9694845
17
35357670
18
129644790
19
477638700
20
1767263190
21
-2025814172
进行递归转递推的修改。速度提高了非常多倍。
#include <iostream>
using namespace std;
int *f;
const int MAXSIZE = 1000;
void cal(int begin, int end);
int main() {int n, everN_MAX=0;f = new int[MAXSIZE];while (cin >> n && n) {if (n > everN_MAX) { cal(everN_MAX, n); }cout << f[n] << endl;}delete[] f;
}void cal(int begin, int end) {int i, j;for (i = begin; i <= end; i++) {if (i == 1) f[i] = 1;else {f[i] = 0;for (j = 1; j < i; ++j) f[i] += f[j] * f[i - j];}}
}
这个就简单多了,输出的结果试了试。
1
1
2
1
3
2
4
5
5
14
6
42
7
132
8
429
9
1430
10
4862
11
16796
12
58786
13
208012
14
742900
15
2674440
16
9694845
17
35357670
18
129644790
19
477638700
20
1767263190
21
-2025814172
字符串加括号问题(矩阵乘法组合问题)C++相关推荐
- BZOJ 4180: 字符串计数 后缀自动机 + 矩阵乘法 + 二分(神题)
Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999. 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', ...
- 将矩阵转为一行_理解矩阵乘法
理解矩阵乘法 考研需要考一门课<线性代数>,这门课其实是教矩阵. 刚学的时候,还蛮简单的,矩阵加法就是相同位置的数字加一下. 矩阵乘法也类似,矩阵乘以一个常数,就是所有位置都乘以这个数. ...
- BZOJ4180: 字符串计数 SAM+矩阵乘法
Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999. 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', ...
- 高等组合学笔记(五): 加括号问题,集合的分类问题,多项式恒等式的组合证明
加括号问题 (Catalan数的其他组合解释) 凸多边形的三角剖分 c3=5c_3=5c3=5,cn=1n+1(2nn)c_n=\frac1{n+1}\binom {2n}ncn=n+11(n2 ...
- [BZOJ]4180: 字符串计数 SAM+矩阵乘法+二分
Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999. 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', ...
- 输出矩阵连乘所有的完全加括号形式
例如说,有四个矩阵ABCD相乘,那么所有的完全加括号结果为(A((BC)D)) (A(B(CD))) ((AB)(CD)) (((AB)C)D) (A(BC))D).要求输出n个矩阵连乘所有的完全加括 ...
- python除号的乘法加括号_乘除法添加括号规则
3. 乘.除法混合运算的性质 (1) 在乘.除混合运算中,被乘数.乘数或除数可以连同运算符号一 起交换位置. 例如, a × b ÷ c=a ÷ c × b=b ÷ c × a . (2) 在乘.除混 ...
- ncnn 框架分析 openmp多核加速 缓存 仿存 cache 快速矩阵乘法 单指令多数据指令SIMD
ncnn 框架分析 本文github链接 博文末尾支持二维码赞赏哦 _ 在ncnn中建立新层 ncnn 下载编译使用 参考1 参考2 1. param 和 bin 文件分析 param 7767517 ...
- 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )
文章目录 颜色模式 颜色通道 Android 中的颜色矩阵 矩阵乘法运算 滤镜中的矩阵乘法运算 矩阵加法运算 滤镜中的矩阵乘法运算 滤镜运算原理 ( 总结 ) 实际滤镜理论示例 颜色模式 颜色模式 : ...
最新文章
- 关于示波器地线的问题!
- 《深入理解java虚拟机》笔记1——Java内存区域与Java对象
- 互联网1分钟 |1219
- Codeforces Round #490 (Div. 3)
- python的特征提取实验一_在opencv3中使用ORB进行特征提取实验-Python版
- Abp框架准备加入.NET Foundation
- 在pycharm中自定义模板代码,快速输出固定代码块
- 如何给namedtuple添加docstring
- 专用集装箱行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 细胞亚器文献阅读之酵母液泡与线粒体的动态互作A Dynamic Interface between Vacuoles and Mitochondria in Yeast
- vue 富文本编辑器wangeditor 上传图片
- win10局域网加入工作组计算机,Win10专业版加入局域网工作组的技巧
- 强大的头像制作神器微信小程序源码/支持外卖CPS等优惠劵小程序源码
- python爬取百度街景图像
- 电脑配置学习(台式机)
- 【安全算法】一文带你简要了解常见常用的安全算法
- Swagger-ui.html页面简单的修改
- 1077 互评成绩计算
- ilove中文_iLovePDF中文版
- 连续时间系统的时域分析
热门文章
- 安装RVDS2.2破解版
- 工作总结20190121
- linux/unix编程手册-56_60
- flex布局:子子元素过大撑开了设定flex:1的子元素的解决方案
- 作为一枚学生党,如何提升自己华丽转身
- Spring基于Java的JSR-250注解
- 【Android开发日记】第一个任务Android Service!Service靴+重力感应器+弹出窗口+保持执行...
- 企业如何测试邮件系统反垃圾反病毒的实际效果
- 悬赏200积分征集cisco7505多线路负载均衡方案
- 监督学习应用与梯度下降