问题描述:
定义于字母表∑{a,b,c)上的乘法表如表1所示
表1∑乘法表
a b c
a b b a
b c b a
c a c c
依此乘法表,对任一定义于∑上的字符串,适当加括号表达式后得到一个表达式。例如,对于字符串x=bbbba,它的一个加括号表达式为i(b(bb))(ba)。依乘法表,该表达式的值为a。试设计一个动态规划算法,对任一定义于∑上的字符串x=x1x2…xn,计算有多少种不同的加括号方式,使由x导出的加括号表达式的值为a
要求:
输入:输入一个以a,b,c组成的任意一个字符串。
输出:计算出的加括号方式数。
算法实现:可以定义一个三维数组a[n][n][3],n为输入字符串的长度,a[i][j][0]为从字符串中第i个元素到第j个元素的子串表达式值为a的加括号方式数,a[i][j][1]为从字符串中第i个元素到第j个元素的子串表达式值为b的加括号方式数,a[i][j][2]为从字符串中第i个元素到第

该博客介绍了一个利用动态规划算法解决的乘法表问题,具体涉及如何根据给定的乘法表计算字符串的不同加括号表达式,使得表达式值为特定字母。博客提出了三维数组的解决方案,通过计算主对角线和次对角线来逐步确定所有子串的加括号方式数,并给出了C语言的程序实现。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



