首页教程应用教程正文

算法比赛日程,C或者C++设计一个非递归算法建立一个运动员比赛日程表

发布时间:2024-05-02 07:47:31 来源:其它 作者:未知

1,C或者C++设计一个非递归算法建立一个运动员比赛日程表

1,C或者C++设计一个非递归算法建立一个运动员比赛日程表

帮你解决了!选手只要是偶数就行所以2k和2^k都行!希望你能采纳和加分!呵呵

#include#include#defineFALSE0#defineTRUE1#defineMaxplayers20#defineMaxCombinations(Maxplayers/2)*(Maxplayers-1)structgame{intone,two;};intplayers;/*选手总数*/intz4;longcombinations;/*比赛场数,一场有两人参加,故起名combinations*/inta,b,c,i,m,startC,matchCount,roundCount,index;longround_set;/*轮次选择的标志,如果某位被置1则相应的选手已经被加入当前轮次*/longtotalChecks;structgametourn1+MaxCombinations];/*单循环比赛tournament*/intmList1+Maxplayers/2];/*matches*/structgamecList1+MaxCombinations];/*所有比赛的对战组(一组两人)*/intcUsed1+MaxCombinations];/*已经使用的对战组*/voidShowSchedule(intevent)//显示日程表{intindex,r,m;fprintf(stdout,共有\n%d个选手,players-event);fprintf(stdout,\n);for(r1;rlt;players/2;r++)fprintf(stdout,好戏%d,r);fprintf(stdout,\n);fprintf(stdout,+-);for(r1;rlt;(players/2)*6-2;r++)fprintf(stdout,-);fprintf(stdout,\n);index1;for(r1;rlt;players-1;r++){fprintf(stdout,第%2d轮|,r);for(m1;mlt;players/2;m++){fprintf(stdout,%2dvs%2d,tournindex].one,tournindex].two);index++;}fprintf(stdout,\n);}fprintf(stdout,\n%d次尝试对战分组\n\n,totalChecks);}voidClearArrays()//清除以前的标记{inti;for(i0;ilt;MaxCombinations;i++){tourni].one0;tourni].two0;}for(i0;ilt;Maxplayers/2;i++)mListi]0;for(i0;ilt;MaxCombinations;i++){cListi].one0;cListi].two0;}for(i0;ilt;MaxCombinations;i++)cUsedi]0;}voiddoSchedule(intflag)//安排比赛日程{players4;if(z!players)playersz;while(playerslt;Maxplayers){combinationsplayers/2*(players-1);totalChecks0;ClearArrays();/*初始化所有比赛对战图*//*a*/m1;/*b12345*/for(a1;alt;players;a++)/*1*/for(ba+1;blt;players;b++){/*2.*/cListm].onea;/*3..*/cListm].twob;/*4...*/m++;/*5....*/}roundCount1;index1;while(roundCountlt;players-1){matchCount1;round_set0;for(i0;ilt;Maxplayers/2;i++)mListi]0;startCroundCount;/*开始查找,找到合适的对战组加入当前的比赛轮次*//*注:因为算法已经被验证对任何一个选手数目,总会有一个解决方案,所以这里不怕会有死循环*/while(matchCountlt;players/2){ccombinations+1;while(cgt;combinations){cstartC;/*查找下一个可以加入当前轮次的对战组*/while((clt;combinations)amp;amp;((round_setamp;(1lt;lt;cListc].one))||(round_setamp;(1lt;lt;cListc].two))||(cUsedc])))c++;if(cgt;combinations){/*没有找到合适的对战组,故回*/do{mListmatchCount]0;matchCount--;index--;round_setamp;(1lt;lt;cListmListmatchCount]].one);round_setamp;(1lt;lt;cListmListmatchCount]].two);cUsedmListmatchCount]]FALSE;tournindex].one0;tournindex].two0;/*cList:已经使用的组,mList:合适的对战组*/}while(cListmListmatchCount]].one!cListmListmatchCount]+1].one);startCmListmatchCount]+1;}}/*找到一个合适的对战组,并放到当前比赛轮次中*/tournindex]cListc];totalChecks++;/*动态显示进度*/if((totalChecks%1000)0)fprintf(stdout,%d/033A/n,totalChecks);cUsedc]TRUE;mListmatchCount]c;startC1;round_set|(1lt;lt;cListc].one);round_set|(1lt;lt;cListc].two);index++;matchCount++;}/*进入下一轮比赛的安排*/roundCount++;}fprintf(stdout,);ShowSchedule(flag);break;}voidmain(){printf(请输入参赛队员的个数n2k);scanf(%d,amp;z);if(z%20){doSchedule(0);}elseprintf(输入参赛队员的个数要为偶数!);}

2,足球比赛16支队,赛程安排算法

2,足球比赛16支队,赛程安排算法

能不能说说具体要求,16队全部淘汰赛,还是先小组赛再淘汰赛,或者是纯小组赛,制定好规则后才能设计算法,请补充问题

人家说的很清楚嘛,是单循环赛

下面说下赛程安排(用116表示球队)

第一轮:

116

215

314

413

512

611

710

89

第二轮:

115

1614

213

312

411

510

69

78

以下赛程以此类推,简单的说就是:第一支队伍不动,其他队伍逆时针循环,直到每一支队伍都与第一队比赛过了,十五轮就就结束了

十七支队伍同样可用这样的方法,每一轮都有一支队伍轮空

第一轮:

117

216

315

414

513

612

711

810

9(每一支转到此处的球队轮空)

本人也没有组织过球赛,没有实际操作过,如有错误,还请原谅

3,11月23号的【NBA】赛程大小分帮算下.

3,11月23号的【NBA】赛程大小分帮算下.

凯尔特人那场小,热火那场大,太阳那场大,魔术那场小,兄弟,最好少选场数多投倍数

热火赢了啊,这是肯定的啊

东区15支西区15支常规赛:一支球队要跟同区的每一支球队各打4场比赛(两场主场,两场客场)和不同区的每支球队各打两场比赛(一场主场,一场客场)这样下来每一支球队在常规赛都要打八十二场比赛顺便把算法写出来:一个区的比赛总场数:15×14×(4+2)-30=1230(场)一个区的球队总数为15个每只球队一个赛季的比赛场数就为:1230/1582(场)

常规赛打完,每个赛区战绩排在前八名的进入季后赛赛区的第一名对第八名,第二名对第七名,第三名对第六名,第四名对第五名季后赛是打淘汰制比赛,每轮比赛是七场四胜制

最终决出赛区第一名两个赛区的第一名争夺总冠军

周日小牛@火箭09:30am文字直播

周四魔术@火箭09:30am文字直播

周五火箭@掘金11:30am文字直播

周日火箭@公牛09:30am文字直播

周一火箭@活塞07:00am文字直播

周六火箭@灰熊09:00am文字直播

周日猛龙@火箭09:30am文字直播

周二勇士@火箭08:00am文字直播

周四火箭@凯尔特人08:30am文字直播

周六火箭@魔术08:00am文字直播

周日尼克斯@火箭09:30am文字直播

周三火箭@奇才08:00am文字直播

周四火箭@尼克斯08:30am文字直播

周六森林狼@火箭09:30am文字直播

周一黄蜂@火箭03:30am文字直播

周三76人@火箭09:30am文字直播

周日马刺@火箭09:30am文字直播

周二超音速@火箭03:30am文字直播

周四火箭@超音速11:00am文字直播

周六火箭@开拓者11:00am文字直播

周一爵士@火箭08:00am文字直播

周三勇士@火箭09:30am文字直播

周六火箭@步行者08:00am文字直播

周日火箭@雄鹿09:30am文字直播

周二火箭@森林狼09:00am文字直播

周五骑士@火箭09:00am文字直播

周日老鹰@火箭09:30am文字直播

周二开拓者@火箭09:30am文字直播

周四国王@火箭09:30am文字直播

周三火箭@骑士08:00am文字直播

周五热火@火箭09:00am文字直播

周六火箭@黄蜂09:00am文字直播

周一公牛@火箭09:00am文字直播

周三奇才@火箭09:30am文字直播

周六灰熊@火箭09:30am文字直播

周一掘金@火箭09:00am文字直播

周四步行者@火箭09:30am文字直播

周五火箭@小牛10:30am文字直播

周日黄蜂@火箭09:30am文字直播

周二网@火箭09:30am文字直播

周四火箭@老鹰08:00am文字直播

周六山猫@火箭09:30am文字直播

周一湖人@火箭08:00am文字直播

周三凯尔特人@火箭09:30am文字直播

周四火箭@黄蜂09:00am文字直播

周六火箭@勇士11:30am文字直播

周日火箭@太阳11:00am文字直播

周二国王@火箭09:30am文字直播

周四森林狼@火箭09:30am文字直播

周一火箭@马刺02:00am文字直播

周三火箭@国王11:00am文字直播

周五火箭@开拓者11:30am文字直播

周六火箭@超音速11:30am文字直播

周一火箭@快船10:30am文字直

周四超音速@火箭09:30am文字直播

周六太阳@火箭09:30am文字直播

周一火箭@掘金10:00am文字直播

周二火箭@爵士10:00am文字直播

周四快船@火箭09:30am文字直播

要分析吗

热火赢步行者,这场肯定没异议的

黄蜂赢快船,98%

文章TAG: 比赛 算法 c++ 日程 设计 递归 算法比赛日程

还没有评论,快来抢沙发吧!

最新发现

相关资讯

新闻热榜

热门游戏

精彩专题