最近小弟遇到一个有趣的问题
数据:N位裁判,A个赛场,每个赛场有B场比赛,比赛共进行C天,每天上午下午各有一场比赛.
条件:1.一场比赛有两位不同的裁判
2.每位裁判不能超过一个参赛的最大值D,D=(A*B*2)/N
3.同一上午或下午,一个裁判只能参加一场比赛
要求:排出一张裁判参赛的日程表(表中包括参赛日期,上午下午,参赛赛场,每个赛场有那两位裁判)
小弟用递归函数基本上完成了上述题目的要求,但要是数据取值过大就会发生堆栈溢出,不知各位大
侠有没有什么更好办法,是不是一定要用数据结构方面的知识?请大家多多指教!
数据:N位裁判,A个赛场,每个赛场有B场比赛,比赛共进行C天,每天上午下午各有一场比赛.
条件:1.一场比赛有两位不同的裁判
2.每位裁判不能超过一个参赛的最大值D,D=(A*B*2)/N
3.同一上午或下午,一个裁判只能参加一场比赛
要求:排出一张裁判参赛的日程表(表中包括参赛日期,上午下午,参赛赛场,每个赛场有那两位裁判)
小弟用递归函数基本上完成了上述题目的要求,但要是数据取值过大就会发生堆栈溢出,不知各位大
侠有没有什么更好办法,是不是一定要用数据结构方面的知识?请大家多多指教!
到时再给出代码吧还有一个投机取巧的方法,因为每个上下午就只有一场比赛
那么我每次取两名裁判出来,用满他的参赛场数之后(一天就两次)
再选两位裁判出来做同样的操作
不过这种方法会出现有裁判没有参加比赛的情况,但是题目中没有要求喔。
嘻嘻~~~~
果第二次取的裁判中有一人是第一次取的两人中的一人就重取,所以我的递归常会溢出。
我回去试试用深度搜索。
不好意思,还少了一个条件:不是每一个裁判都必须上场。