算法分析大作业动态规划方法解乘法表问题和汽车加油行驶问题目录1
动态规划解乘法表问题1
1问题描述------1.2算法设计思想------1.3设计方法------1.4源代码------1
5最终结果------2
动态规划解汽车加油行驶问题2
1问题描述------2.2算法设计思想------2
3设计方法------2.4源代码------2
5最终结果------3
动态规划解决乘法表问题1.1问题描述定义于字母表∑{a,b,c)上的乘法表如表所示:依此乘法表,对任一定义于∑上的字符串,适当加括号表达式后得到一个表达式
例如,对于字符串x=bbbba,它的一个加括号表达式为(b(bb))(ba)
依乘法表,该表达式的值为a
试设计一个动态规划算法,对任一定义于∑上的字符串x=x1x2…xn,计算有多少种不同的加括号方式,使由x导出的加括号表达式的值为a
2算法设计思想设常量a,b,c分别为1,2,3
n为字符串的长度
设字符串的第i到第j位乘积为a的加括号法有result[i][j][a]种,字符串的第i到第j位乘积为b的加括号法有result[i][j][b]种,字符串的第i到第j位乘积为c的加括号法有result[i][j][c]种
则原问题的解是:result[i][n][a]
设k为i到j中的某一个字符,则对于k从i到j:result[i][j][a]+=result[i][k][a]*result[k+1][j][c]+result[i][k][b]*result[k+1][j][c]+result[i][k][c]*result[k+1][j][a];result[i][j][b]+=result[i][k][a]*result[k+1][j][a]+result[i][k][a]*result[k+1][j][b]+result[i][