Re: [问题] 征求神人帮解大地游戏分组的超难排列组合

楼主: chuanmaotou (0xFFFFFFFF)   2015-06-19 21:23:07
※ 引述《a0928855286 (Alan君)》之铭言:
: 这是社团的大地游戏分组(两队一组)
: 1.共有18队
: 2.共有10个游戏(分别10个时段)
: 3.每队一定要有分到10个时段(都要玩到10个游戏)
: 4.每队不能和同一队玩两次
: 5.不一定要和每组都玩过
: 6.一个时段一个游戏,只能有一组玩
: 诚征神人或是数学天才的大大帮忙
: 小弟已经濒临崩溃,觉得无解啊==
: 但是上面有压力就是这些条件。。。。
似乎有点像循环日程表问题
如果队伍的数目是2^k的形式就好解决了,可以用分治法解决
先把问题转成:
有2^k个队伍跑关进行活动,保证关卡数小于队伍数
怎么样排列才能使得跑关时不会遇到重复的队伍?
首先当n=1时 只有两队参赛
所以得到
组别 对局组别
1 2
2 1
当n=2时 有四队参赛
又知道 排成如n=1时的形式可以保证不会和同样的队伍对局
因此可以得到排法
组别 对局组别
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
所以在n=3(十六队参赛时) 可以得到
如此程式的结果 https://ideone.com/aj4HfK
因为只有十关 所以只要取第二栏到第十一栏的资讯
就可以找到满足3 4 5 6条件的对手表
又因为已经保证不会遇到重复的队伍
所以只要将第一对该跑的关卡设为1 2 3 4 5 6 7 8 9 10
之后再依序填入其他组别该跑的关卡 即可得到答案
以此方法填入则非2^k形式的数无法找到解
假设 对伍数为3
组别 对局组别
1 2 3
2 1 ? ?为无法入填
3 ? 1
再来是 如18=2*(3^2)形式的6=2*3
组别 对局组别
1 2 3 4 5 6
2 1 ? 5 4 ?
3 ? 1 6 ? 4
4 5 6 1 2 3
5 4 ? 2 1 ?
6 ? 4 3 ? 1
因为填入后会有矛盾,跟自己对决?还是同一队在同一时间可以跟好几组打?
我猜测,假设队伍数为n,关卡数为m,则必须符合
(n/m) mod 2 = 0
才能成立,只是一个猜测,不保证正确。
我刚刚把 #1LWwxha9 的程式丢到i7-4770的电脑
开-O3编译后跑了三个半小时还是没结果XD
作者: longlongint (华哥尔)   2015-06-20 13:46:00
就 笨蛋暴力法 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com