算法训练 比赛安排
来源:互联网 发布:一级国家域名列举 编辑:程序博客网 时间:2024/04/19 14:14
算法训练 比赛安排
时间限制:1.0s 内存限制:512.0MB
问题描述
设有有2 n(n<=6)个球队进行单循环比赛,计划在2 n – 1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2 n – 1天内每个队都与不同的对手比赛。
输入格式
输入文件matchplan.in共一行,输入n的数值。
输出格式
输出文件matchplan.out共(2 n – 1)行,第i行输出第i天的比赛安排。
格式为:<i> A-B,C-D,……。其中i是天数,A,B分别为比赛双方的编号,每行共2 n-1个比赛场次。
格式为:<i> A-B,C-D,……。其中i是天数,A,B分别为比赛双方的编号,每行共2 n-1个比赛场次。
样例输入
2
样例输出
<1>1-2,3-4
<2>1-3,2-4
<3>1-4,2-3
<2>1-3,2-4
<3>1-4,2-3
问题分析:题目不难,用一个二位数组标志队伍i和j是否对战过,再用cur,op来记录每天的比赛已经比赛的队伍和配对的对手但是坑爹的是……输出的时候题目里明明是逗号,但是样例里的输出中间确实空格……
#include<cstdio>#include<cstring>#include<cmath>#include<string>#include<vector>#include<iostream>using namespace std;int team[70][70];//表示与队伍i已经对战过的队伍 int cur[70];//表示当前已经对战过的队伍int op[35][2];int n; int main(){cin >> n;int num = pow(2,n);memset(team,0,sizeof(team));for(int i=1; i<=num-1; i++)//表示第i场比赛 {memset(cur,0,sizeof(cur));memset(op,0,sizeof(op));int t = 0; for(int j=1; j<=num; j++)//表示第j支队伍 {if (cur[j] == 0)//如果这支队伍没有对手,配对 {cur[j] = 1;for(int k=1; k<=num; k++)//k表示配对的对手 {if (j == k || cur[k] == 1)//如果队伍k已经参与其他比赛,跳过 continue;if (team[j][k] == 0 && cur[k] == 0)//如果队伍j与k没有对战过,配对 {team[j][k] = 1;cur[k] = 1;op[t][0] = j;op[t++][1] = k;break;}}}}printf("<%d>",i);for(int i=0; i<t; i++)printf("%d-%d%c",op[i][0],op[i][1],i==t-1?10:32);}return 0;}
0 0
- 算法训练 比赛安排
- 算法训练 比赛安排
- 算法训练 比赛安排
- 蓝桥杯 算法训练 比赛安排
- first,单循环比赛安排算法
- 比赛赛程安排算法--分治算法
- 比赛安排
- 比赛安排
- 比赛安排
- BNU1068:比赛安排
- bnuoj 1068 比赛安排
- Tsinsen A1103 比赛安排
- Tsinsen A1107 比赛安排
- bnuoj 1068 比赛安排
- 上班族训练安排。
- 算法比赛
- 数学训练----数论-寒假安排
- 多人单循环比赛的安排问题
- Json随笔
- java设计模式(单例模式)
- 微信web开发者工具调试
- PAT 1129. Recommendation System (25)
- shell脚本登录sftp
- 算法训练 比赛安排
- Java的文件读写操作
- LeetCode#292. Nim Game
- 《Credit Risk Scorecard》第八章: Scorecard Implementation
- 上传文件及预览,jsp +servlet
- 第八章 IO 库(重点)
- 简析SNS社交系统ThinkSNS适用的行业!
- Thread 1:EXC_ARITHMETIC(code=EXC_I386_DIV,subcode=0x0) 错误提示
- ajax 上传文件