求一个递归算法的问题!

webgdd 2003-11-15 09:51:18
现有一级变量,X(i),i=1...n,n的大小未知,和一组约束条件,R(i),0<=X(i)<=R(i),现求一算法,使得X(1)*X(2)*....X(n)最大,而且X(1)+X(2)+....X(n)=M,M为已知常数。要求用户递归算法解决,因为n未知,不能用户嵌套的循环方法。
...全文
33 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
saint001 2003-11-16
  • 打赏
  • 举报
回复
考虑用动态规划?
webgdd 2003-11-16
  • 打赏
  • 举报
回复
to: plainsong(短歌)
你的方法不错,可是如果我的X变量为(X(i)+A(i))^B(i)/C(i),有没有什么好的方法?
A、B、C为常数
zhouqingyuan 2003-11-16
  • 打赏
  • 举报
回复
用递归要方便一点
zhouqingyuan 2003-11-16
  • 打赏
  • 举报
回复
有道理
Riemann 2003-11-16
  • 打赏
  • 举报
回复
plainsong(短歌)正解。
短歌如风 2003-11-16
  • 打赏
  • 举报
回复
没看到约束值……
我觉得应该这样:
找到最小的j使得R(j)是R中的最小值,如果R(j) >= M/n,则所有的X(i)= M/n;否则:
X(j) = R(j);
从R中去掉R(j),从M中减去X(j),X中去掉X(j),n = n - 1,再求解X。
可以用循环,也可以用递归。
短歌如风 2003-11-16
  • 打赏
  • 举报
回复
不需要递归,当X(1) = X(2) = ... = X(n) = M/n时最大。
ZhangYv 2003-11-16
  • 打赏
  • 举报
回复
如果有约束条件X(1)+X(2)+....X(n)=M,当每个的X(1)可以取M/n时候最大,也就是最大不超过(M/n)^n;如果没有约束,S=X*Y,X一定,Y越大S也越大。
根据上面两个条件就可以设计算法了。

33,029

社区成员

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

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