帮你解决了!选手只要是偶数就行所以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(输入参赛队员的个数要为偶数!);}
能不能说说具体要求,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(每一支转到此处的球队轮空)
本人也没有组织过球赛,没有实际操作过,如有错误,还请原谅
凯尔特人那场小,热火那场大,太阳那场大,魔术那场小,兄弟,最好少选场数多投倍数
热火赢了啊,这是肯定的啊
东区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%
还没有评论,快来抢沙发吧!
最新发现
相关资讯
算法比赛日程,C或者C++设计一个非递归算法建立一个运动员比赛日程表
round_set|(1lt
2024-05-02 07:47:31
设置个重播,flash最后一个场景设置重播按钮
在最后一帧添加一个STOP.作用就是在最后一帧停止播放然后在最后一帧添加一个按钮,在按钮上添加代码:on(release){gotoAndPlay(1)
2024-05-02 07:45:46
电脑怎么炒股,我要买股票,在家怎么在电脑上操作,请高手指教!
交易密码就是买卖股票时用的密码1.首先需要在证券公司开户,必须自己本人带身份证和银行卡去办手续,并申请开通网上炒股,(开户费用约90元)2.下载一个由你开户的证券公司指定的网上交易软件,别的软件都不能用3.在你的银
2024-05-02 07:45:20
手机为什么有缓存垃圾,手机缓存是什么,手机为什么会有缓存
手机随着使用应用软件,肯定会产生很多垃圾缓存
2024-05-02 07:45:01
数字加减乘除运算法,有理数的加减乘除法
假设对nk时这4个式子都成立,那么当n=k+1时,有
2024-05-02 07:44:54
新闻热榜
热门游戏
精彩专题