算术表达式求最大值的算法

POOHccc 2008-01-20 04:46:18

给你一个算术表达式,求运算结果的最大值
例如:5*7+2
答案:45

例如:6*3-9*3
答案:27

例如:5+2-7*2-3
答案:14

这题除了穷举法,还有效率更好的算法吗
一直想不透
...全文
269 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fongfc 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tailzhou 的回复:]
可以用动态规划法:

op[i]表示第i个数字后的计算符
dp1[i][j] 表示第i个数字到第j个数字之间的表达式的最大值;
dp2[i][j] 表示第i个数字到第j个数字之间的表达式的最小值;

那么 dp1[i][j]=
max{
dp1[i][i'] op[i'] dp1[i'][j],
dp1[i][i'] op[i'] dp2[i'][j],
dp2[i][i'] op[i'] dp1[i'][j],
dp2[i][i'] op[i'] dp2[i'][j]
}
dp2[i][j]=
min{
dp1[i][i'] op[i'] dp1[i'][j],
dp1[i][i'] op[i'] dp2[i'][j],
dp2[i][i'] op[i'] dp1[i'][j],
dp2[i][i'] op[i'] dp2[i'][j]
}
对所有的i',i'>=i and i' <j;

[/Quote]
我不太懂您的意思
dp1[i][j]=
max{
dp1[i][i'] op[i'] dp1[i'][j],
...
对所有的i',i'>=i and i' <j;
--------------------------
假设我们现在要算dp[1][3],
所以dp1[1][3]=
max{
dp1[1][1] op[i'] dp1[1][3],
...
而dp1[1][3]却是我们现在所不知道的@@"
所以我不太懂到底是要代哪个值
请指教,谢谢
tailzhou 2008-01-21
  • 打赏
  • 举报
回复
可以用动态规划法:

op[i]表示第i个数字后的计算符
dp1[i][j] 表示第i个数字到第j个数字之间的表达式的最大值;
dp2[i][j] 表示第i个数字到第j个数字之间的表达式的最小值;

那么 dp1[i][j]=
max{
dp1[i][i'] op[i'] dp1[i'][j],
dp1[i][i'] op[i'] dp2[i'][j],
dp2[i][i'] op[i'] dp1[i'][j],
dp2[i][i'] op[i'] dp2[i'][j]
}
dp2[i][j]=
min{
dp1[i][i'] op[i'] dp1[i'][j],
dp1[i][i'] op[i'] dp2[i'][j],
dp2[i][i'] op[i'] dp1[i'][j],
dp2[i][i'] op[i'] dp2[i'][j]
}
对所有的i',i'>=i and i'<j;
POOHccc 2008-01-21
  • 打赏
  • 举报
回复
题目解出来了,谢谢楼上的帮忙
huangzhtao 2008-01-20
  • 打赏
  • 举报
回复
不太明白LZ的意思,是不考虑原来的算符优先级,看计算的最大值吗?
ProjectDD 2008-01-20
  • 打赏
  • 举报
回复
表达式?怎么与最大值联系,好象你没说清楚
是指一系列有序的符号吗?
如(+,*,+)与一组给定的数??,不太明白
Supper_Jerry 2008-01-20
  • 打赏
  • 举报
回复
应该遵循一些原则的。正负优先级最高,其次乘除
1.如果碰到-就尽量减低-造成的影响,看是否能让-变成+(通过将-后面的算式变成-)
2./的话就尽量减小分母。
3.如果全部为正数后就*优先于+,(1除外)
个人观点,仅供参考。
POOHccc 2008-01-20
  • 打赏
  • 举报
回复
说的不够清楚

符号只有(+, -, *, /)
另外不考虑符号的优先级

例如:5*7+2
总共有二种算法:
1. (5*7)+2
2. 5*(7+2)
代出来的结果,1. 解为37,2. 解为45
所以最大值是45

例如:6*3-9*3
最大值的算法就是((6*3)-9)*3
所以是27

例如:5+2-7*2-3
最大值的算法就是(5+2)-((7*(2-3))
所以是14

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧