找回密码
 加入
搜索
查看: 2947|回复: 11

[效率算法] 分治算法

  [复制链接]
发表于 2010-11-25 19:43:29 | 显示全部楼层 |阅读模式
本帖最后由 蜘蛛抱蛋 于 2010-11-26 11:25 编辑
问题是:某次球赛为循环制,n位选手参赛,赛程n-1天,每位选手都必须与其他每位选手比赛一次,最后按积分排名选出优胜者。要求每人每天都要赛一场。用程序计算出日程安排。为了简化过程,参赛选手数量为2的N次方


要用到算法里的 分治算法   大家可以试一试~

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +50 贡献 +20 收起 理由
pusofalse + 50 + 20 好题,学习了。

查看全部评分

发表于 2010-11-25 21:45:33 | 显示全部楼层
分治是最基础的算法?~ 我看着怎么这么难啊。 - -|||
发表于 2010-11-25 21:52:21 | 显示全部楼层
没认真读书  头一次听说分治算法
发表于 2010-11-25 21:58:16 | 显示全部楼层
12
13 28
14 23 37
15 24 38 46
16 25 34 47
17 26 35 48
18 27 36 45
发表于 2010-11-25 22:01:23 | 显示全部楼层
手机上,不方便写代码.没听过分治
发表于 2010-11-26 00:13:49 | 显示全部楼层
本帖最后由 3mile 于 2010-11-26 00:15 编辑

分治算法?受教了。
用笨方法解决的。不知道正确与否?
游客,如果您要查看本帖隐藏内容请回复
发表于 2010-11-26 11:10:01 | 显示全部楼层
孤陋寡闻了, 没用过最基础的分治算法
 楼主| 发表于 2010-11-26 11:25:55 | 显示全部楼层
本帖最后由 蜘蛛抱蛋 于 2010-11-26 11:49 编辑

回复 7# gapkiller

说错话了,我是看书上这么介绍的。。。
回复 6# 3mile

你可能误解了,每人每天只能比赛一场
发表于 2010-11-26 13:32:17 | 显示全部楼层
看看 不明白分治算法
发表于 2010-11-26 13:47:11 | 显示全部楼层
本帖最后由 3mile 于 2010-11-26 13:58 编辑

回复 8# 蜘蛛抱蛋
我误解了吗?也许吧。
结果的每一横行为一天的比赛安排。
还是把天数安排加上吧。
#include <array.au3>
Local $a = 0, $temp = 2, $array[1][2]
Local $input = InputBox('输入', '请输入选手人数', '8')
For $i = 1 To $input
    For $n = $temp To $input
        ReDim $array[$a + 2][2]
        $array[$a][0] = '选手' & $i
        $array[$a][1] = '选手' & $n
        $a += 1
    Next
    $temp += 1
Next
_ArrayDelete($array, UBound($array))
$a = 0
$temp = ''
$array1 = $array
Local $fin, $go
For $n = 0 To $input - 1 - 1
    $temp &= "第" & $n + 1 & "天" & @TAB
    $temp &= $array1[$n][0] & '对' & $array1[$n][1] & '|'
    For $i = 0 To UBound($array) - 1
        If Not StringInStr($temp, $array[$i][0]) And Not StringInStr($temp, $array[$i][1]) Then
            $temp &= $array[$i][0] & '对' & $array[$i][1] & '|'
            $go &= $i & '|'
        EndIf
    Next
    $del = StringSplit(StringTrimRight($go, 1), '|')
    For $y = $del[0] To 1 Step -1
        _ArrayDelete($array, $del[$y])
    Next
    $go = ''
    $fin &= $temp & @CRLF
    $temp = ''
Next
MsgBox(0, 0, $fin)
 楼主| 发表于 2010-11-26 14:35:49 | 显示全部楼层
回复 10# 3mile

哦,是我没仔细看,用循环也可以,这个例子只不过为了说明这个算法
发表于 2010-11-29 09:45:18 | 显示全部楼层
好递归...
字数补丁..
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 12:36 , Processed in 0.080100 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表