| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1231 人关注过本帖
标题:一道关于递归的c++算法程序题
只看楼主 加入收藏
阳gogo
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2011-4-8
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
一道关于递归的c++算法程序题
题目描述:
日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将2520个桔子分给六个
儿子。分完 后父亲说:“老大将分给你的桔子的1/8给老二;老二拿到后连同原先的
桔子分1/7给老三;老三拿到后连同原先的桔子分1/6给老四;老四拿到后连同原先的
桔子分1/5给老五;老五拿到后连同原先的桔子分1/4给老六;老六拿到后连同原先的
桔子分1/3给老大”。结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔
子?

这是我的分析 不过不清楚怎么样写成递归程序
老二:420=(1/8a+b)*6/7             (1/8a+b)=490
老三:420=((1/8a+b)*1/7+c)*5/6        c=434
老四:420=(((1/8a+b)*1/7+c)*1/6+d)*4/5   ……
老五:420=((((1/8a+b)*1/7+c)*1/6)*1/5+e)*3/4   ……
老六:420=(((((1/8a+b)*1/7+c)*1/6)*1/5)*1/4+f)*2/3   ……
老大:420=7/8a+(((((1/8a+b)*1/7+c)*1/6)*1/5)*1/4+g)*1/3   ……
最后得出a和b的方程组,可以解出a、b值
 
请高手指教 谢谢!
搜索更多相关主题的帖子: 桔子 教授 数学 
2011-09-16 18:43
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:6 
程序代码:
void OutputResuit(char who, int nOriginalNum, int nAfterGetNum, int n)
{      
    if (who > 'f') {
        return;
    }

    cout<<who<<" nOriginalNum: "<<nOriginalNum<<endl;

    char next = who+1;
   
    int nNumNext = 420 * (n - 1) / (n - 2) - nAfterGetNum / n; // 计算下一个人的原来数目
    int nNumNextAfterGet = nNumNext + nAfterGetNum / n;        // 计算下一个人分给下下一个人后的数目
   
    OutputResuit(next, nNumNext, nNumNextAfterGet,n-1);
}



void main()
{     
    // 因为老六分给老大的1/3 后为2520/6 = 420.
    // 所以老六分给老大的1/3 前为 420 * 3 / 2 = 630.也就是分了210给老大。。。
    // 所以老大分的老六之前的为2520/6 - 210 = 420 - 210 = 210. 由于老大分了原来的 1/8 给老二,
    // 所以 老大原来的为 a,a * 7/8 = 210.==>a=240.. 

    // a 是第一个分给别人的人,所以  nOriginalNum = nAfterGetNum = 240。。。8为分数
    OutputResuit('a', 240, 240, 8);
}

图片附件: 游客没有浏览图片的权限,请 登录注册

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-09-17 02:40
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:3 
主要思想是抓住 下一个人分的上一个人的n + 1 分之一时候,要分给下下一个人n分之一

除a外,下一个人的数字为x:有 (x + 上一个人的得到分得数字后 / (n+1))* (n-1) / n = 2520/6=420,抓住这个就可以递归了。

推出a就可以递归了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-09-17 02:58
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
嗯。2楼的思路很清楚。
2011-09-17 08:47
阳gogo
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2011-4-8
收藏
得分:0 
回复 3楼 yuccn
谢谢提醒!我会再认真看一下!
2011-09-17 09:39
阳gogo
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2011-4-8
收藏
得分:0 
回复 楼主 阳gogo


[ 本帖最后由 阳gogo 于 2011-9-17 09:45 编辑 ]
2011-09-17 09:43
阳gogo
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2011-4-8
收藏
得分:0 
回复 2楼 yuccn
谢谢,谢谢!补充问一下,因为我们现在是在学习算法课程,所以老师会让我们用递归来写程序,那么在世家软件开发过程中(我是学java的),算法知识用多少?递归呢?
谢谢指导!
2011-09-17 09:45
快速回复:一道关于递归的c++算法程序题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013544 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved