| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7679 人关注过本帖, 1 人收藏
标题:贪心算法求解这道题
只看楼主 加入收藏
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 104楼 rolimi
我想我是用平均值而不是使用包容量的贪心值达到目前状态的。
至少我现在还没有找到击破该算法获取最优值的数据组合,希望各位帮忙测试下(我觉得关键点在我数据回溯只有一层,当组合超过3个以上时,我觉得得不到最优组合,问题是该是什么样的源数据才能测试的到呢)。

能编个毛线衣吗?
2015-06-16 17:03
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
以下是引用边小白在2015-6-16 18:25:08的发言:


哈哈哈哈!憋了这么多天,还是弄出一大堆垃圾?唉,你不蒸馒头也要蒸口气啊。

这题我不会做,太难啦

我就是真命天子,顺我者生,逆我者死!
2015-06-16 18:36
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 109楼 边小白
你先看看你自己能做到什么程度

我就是真命天子,顺我者生,逆我者死!
2015-06-17 07:36
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
别整天男人女人的,自己一行代码不会写。
这题目已经超过我的知识储备,属于偏题,
我还有别的事情要做,没空多想

我就是真命天子,顺我者生,逆我者死!
2015-06-17 07:42
rolimi
Rank: 4
等 级:业余侠客
威 望:1
帖 子:43
专家分:232
注 册:2015-6-10
收藏
得分:0 
回复 106楼 wmf2014
当第一元素比较大时会出现死循环,其他时候也有时会出现。我贴一个产生测试数据的简单脚本,重定向流到文件中。在数据较多时很多结果并不是最优的,也有死循环不出结果的。
里面的count是最优解(查看输出数据,从右往前看可以快速看出)
程序代码:
# -*- coding:utf-8 -*-
import random

def spawn_random_group(count, capacity):
    total = count * capacity - random.randint(0, capacity-1)
    group = []
    while count > 0:
        weight = total - (count-1)*capacity
        total -= weight
        while weight > 0:
            n = random.randint(1, weight)
            group.append(str(n))
            weight -= n
        count -= 1
    return group

def main():
    count = 10 #int(raw_input("输入宝箱数量:"))
    capacity = 20 #int(raw_input("输入包裹容量:"))
    groups_count = 10 #int(raw_input("输入需要产生的数据组数:"))
    for i in xrange(groups_count):
        group = spawn_random_group(count, capacity)
        print capacity
        print len(group)
        print ' '.join(group)


if __name__ == '__main__':
    main()


python脚本

[ 本帖最后由 rolimi 于 2015-6-17 11:37 编辑 ]

呆呆的逗比程序猿
2015-06-17 11:30
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 112楼 rolimi
嗯,这个情况我昨天就知道了,已经修改。主要是第一个数据大于平均数时出现。
你这个产生数据流的脚本怎么弄?汗~~~~~

[ 本帖最后由 wmf2014 于 2015-6-17 11:44 编辑 ]

能编个毛线衣吗?
2015-06-17 11:40
rolimi
Rank: 4
等 级:业余侠客
威 望:1
帖 子:43
专家分:232
注 册:2015-6-10
收藏
得分:0 
回复 113楼 wmf2014
保存为.py文件,win下命令行窗口
python a.py > data
把输出流定向到文件data中。
前提是装了python2.x,如果py3.x时要简单改一下。可能还要设环境变量,不想设直接输入绝对路径,比如 *****/*****/python.exe a.py > data
然后运行编译后的可执行文件比如win下
xxx.exe < data

需要其他数据时直接改脚本吧,嫌麻烦可以用其他的语言再写一个
这个脚本产生数据比较特殊(贪心对这些数据会得到最优解)

呆呆的逗比程序猿
2015-06-17 12:05
rolimi
Rank: 4
等 级:业余侠客
威 望:1
帖 子:43
专家分:232
注 册:2015-6-10
收藏
得分:0 
回复 113楼 wmf2014
是我弄错了,我忘了代码在n》20时会用随机数。。

呆呆的逗比程序猿
2015-06-17 13:12
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
这帖子我觉得我有必要顶起来 免得沉了  全篇看下来  大家的斗嘴和解题  其实蛮有意思的

风回小院庭芜绿,柳眼春相续
2015-06-19 09:41
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
收藏
得分:0 
以下是引用边小白在2015-6-19 11:38:18的发言:


这是典型的“唯恐天下不乱”的心态。


咋地 不行啊 哼哼 揍你

风回小院庭芜绿,柳眼春相续
2015-06-19 13:45
快速回复:贪心算法求解这道题
数据加载中...
 
   



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

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