现在的位置: 首页 > 综合 > 正文

编程之美读书笔记:买票找零

2013年07月16日 ⁄ 综合 ⁄ 共 855字 ⁄ 字号 评论关闭

问题描述见最后:通过递归的方式写出一个式子,比如是设behind(Bi),between(Bi,B(i+1))分别表示Bi后边的A的个数,和Bi,B(i+1)之间A的个数,但是到最后通过列式子发现递归式子会写很多,通过for循环可以写出来,但是每一个都要写很繁琐,思考了两个小时也没也没能找出比较简单的递归的式子,通过这个例子说明比较复杂的题的递归式子并不好找,需要找到一个很好的数学建模方式才行。遇到这种思路一条的情况,最好换个思路,必要在一棵树上吊死,必将解决问题的思路才是最重要的!正确找出递归式很重要,当然有些问题可能根本就不能采用递归的方式,所以根本就找不出来递归式~

  

看了下编程之美的书,第一种解法给出的递归形式写起代码来比较简单,佩服这个思路。解法2感觉比较另类,没仔细看下去。

è问题描述: 

盛况空前的足球赛即将举行。球赛门票售票处排起了球迷购票长龙。按售票处规定,每位购票者限购一张门票,且每张票售价为50元。在排成长龙的球迷中有m个人手持面值50元的钱币,另有n个人手持面值100元的钱币。假设售票处在开始售票时没有零钱。试问这m+n个球迷有多少种排队方式可使售票处不致出现找不出钱的尴尬局面。 
例如当m=3,n=2时,用A表示手持面值50元钱币的球迷,用B表示手持面值100元钱币的球迷,则最多可得到以下5组不同排队方式,使售票处不致出现找不出钱的尴尬局面。 

售票处   A   A   A   B   B 
售票处   A   A   B   A   B 
售票处   A   B   A   A   B 
售票处   A   A   B   B   A 
售票处   A   B   A   B   A 

è编程任务:对于给定的m和n的值(   0   £   m,n   £   5000),编程计算出m+n个球迷有多少种排队方式可使售票处不致出现找不出钱的尴尬局面。 
è数据输入:由键盘输入m和n的值。 
è结果输出:   程序运行结束时,将计算出的排队方式数写入文件名为FOI2.*   的文本文件中,其中 "* "与相应输入文件的扩展名一致。 
每个计算结果占2行,第1行为输出数据的十进制位数,第2行是相应的输出数据。 

抱歉!评论已关闭.