免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: caesarok
打印 上一主题 下一主题

取余测试题一道 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-02-18 08:14 |只看该作者
原帖由 Lonki 于 2009-2-18 00:40 发表


为什么不能.

我不知道能不能,只是当年模糊有个印象说“贪心法”一般是较优解,数学没学好算法不熟。不过找硬币好像是“贪心法”的典型例子。

[ 本帖最后由 luffy.deng 于 2009-2-18 08:19 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2009-03-27 14:07 |只看该作者
原帖由 3227049 于 2009-2-17 14:13 发表
回答的好像都理解错意思了吧。。。写个简单的。。。
def test(number):
      result={25:0,10:0,5:0,1:0}
      for k in result.keys():
            result[k],number=divmod(number,k)
            if ...

这个才是正解,题目中要求“可以换成最少多少枚硬币”,下面的是我在他的基础上修改的。
#!/usr/bin/env python
#coding=gbk
#author=xiaomayi0323
#date=2009/03/26
#filename=5-5

def test(number):
    result={25:0,10:0,5:0,1:0}
    for k in result.keys():
#        print k,
        result[k],number=divmod(number,k)
#        print result
        if number==0:
            break
#    print result
    print "    ".join(["%d美分:%d"%(k,v) for k ,v in result.items() ])
    sum = 0
    for v in result.keys():
        sum = sum + result[v]
    return "最少可以兑换成%d枚硬币"% sum
    

i = int(raw_input('enter money :'))
#for i in xrange(100):
print "total:%d\n%s"%(i,test(i))

论坛徽章:
0
23 [报告]
发表于 2009-03-27 15:10 |只看该作者
原帖由 luffy.deng 于 2009-2-18 08:14 发表

我不知道能不能,只是当年模糊有个印象说“贪心法”一般是较优解,数学没学好算法不熟。不过找硬币好像是“贪心法”的典型例子。

原因是"硬币有1美分、5美分、10美分、25美分4种。"的条件有些特殊。

论坛徽章:
0
24 [报告]
发表于 2009-03-27 15:32 |只看该作者
#1<n<99

def cal(n)
    ar=[25,10,5,1]

    sum= n/ar[0]
    t= n%ar[0]
   i =1
   while(i<ar.size)
       sum+=t/ar[i]
      
       t=t%ar[i]
        i+=1
   end
return sum


end

论坛徽章:
0
25 [报告]
发表于 2009-03-27 15:40 |只看该作者


[ 本帖最后由 teebye 于 2009-3-27 15:44 编辑 ]

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
26 [报告]
发表于 2009-03-27 16:59 |只看该作者
安除数大到小依次对商取余直到余数小于5
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP