|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 delete_007 于 2013-10-30 08:35 编辑
题目内容:
有一国,其国内硬币可按其面值至该国银行兑换,其面值为任一正整数[n],银行兑换方式为返回面值为如下的三枚:[n/2], [n/3], [n/4],当然也都取整了。另外,该银行也可用该国硬币兑换成等额的RMB。现要求编写计算器,使得输入硬币的面值(即任一正整数),而输出可获得的最大RMB数字。
例如:输入2,则可直接兑成RMB,得输出2。输入12,可先换为 [12/2]=6,[12/3]=4,[12/4]=3,再换成RMB,输出13。
答题要求:
可完形填空如下,允许添加过程或函数及公共变量:
[code=vb]Sub ChangeCoin()
Dim aCoins(), aRes(), nCoin, t#
' 可更改段
' 只能是Dim
' 可更改结束
aCoins = Array(12, 123, 1000, 50000, 600000, 30000000)
Redim aRes(UBound(aCoins))
t = Timer
' 可更改段
For Each nCoin In aCoins
'....
Next
' 可更改结束
Debug.Print "ID: " & "<YOUR ID>"
Debug.Print "Result: " & Join(aRes, ", ")
Debug.Print "Time: " & Format(Timer - t, "0.000s")
End Sub[/code]
评分规则:
1、1分钟内(超过俺就当是死机了)可获得正确结果可得1分。
2、以我的机器为准,1秒内可加1分。
3、可算10^9且低于0.1秒的可再加1分。
4、极其优秀的,超过我的预期的或可再追加1分。
5、没有按要求填空的可能会被扣1分,比如删除了原有的注释、填错了地方之类的~
知识点:
递归
提示:
可先多次换为本国硬币,再换RMB。
再以一例说明,现有面值25的硬币一枚,求最大可换回的RMB数
1、直接换得25RMB,或换得INT(25/2)=12, INT(25/3)=8, INT(25/4)=6,各一枚
2、12的硬币可直接换,得12RMB,或如前可换得6、4、3三枚硬币
8和6的硬币也都同样有两种选择
……
如上会有多个选择分支,需要从中找出最终可得硬币面值之和最大,即为可换得的最大RMB数,此例为6+4+3+8+6=27
另3万的得数为54563,供校验。
标准答案:
不知道如何设置权限,另加~
是否参与点评与总结:
可以参与
补充内容 (2013-9-3 08:59):
总结在21楼,参考答案在32楼 |
评分
-
6
查看全部评分
-
|