⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cyc.cpp

📁 解决n个运动员进行循环赛问题(要求:1.每个选手必须与其他n-1个选手各赛一次
💻 CPP
字号:
// Cyc.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include   <iostream>   
#include   <vector>   
#include   <algorithm>   

using   namespace   std;

typedef    vector<int>   int_array;   

int _tmain(int argc, _TCHAR* argv[])
{
	int   team_count;//队伍总数   
	cin   >>   team_count;				//输入队伍数

	int   virtual_team_count   =   team_count;//虚拟队伍数,保证是偶数   

	if   (virtual_team_count   %   2   !=   0)   
		++virtual_team_count;   

	int   turn_count   =   virtual_team_count   -   1;				//比赛轮数   
	int   game_count_per_turn   =   virtual_team_count   /   2;		//每轮的比赛数   
	int_array   game_numbers(virtual_team_count);					//所有的队伍号码   

	for(int   i   =   1;   i   <=   team_count;   ++i)   
		game_numbers[i   -   1]   =   i;   
	if   (virtual_team_count   !=   team_count)						//奇数人,增加一个虚拟队伍号0,与虚拟队伍比赛表示这天轮空
		game_numbers[virtual_team_count   -   1]   =   0;			//虚拟的队伍号码为0   
	for   (int   i   =   1;   i   <=   turn_count;   ++i)   
	{   
		std::cout   <<   "第"   <<   i   <<   "轮:";   
		for   (int   j   =   1;   j   <=   game_count_per_turn;   j   ++)   
		{   
			std::cout   <<   "<"   <<   game_numbers[j   -   1]   <<   ","   <<   game_numbers[virtual_team_count   -   j]   <<   ">   ";   
		}   
		std::cout   <<  endl;   

		//std::cout<<"<";
		//for   (int   j   =   0;   j   <   virtual_team_count;   j   ++)   
		//{   
		//	std::cout     <<   game_numbers[j] << ",";   
		//}  

		//std::cout<< ">" <<std::endl;

		// 重新排列2-n的位置,主要是将最后一个数旋转到第二个位置上。
		std::rotate(game_numbers.begin()   +   1,   game_numbers.end()   -   1,   game_numbers.end());   

		//std::cout<<"<";
		//for   (int   j   =   0;   j   <   virtual_team_count;   j   ++)   
		//{   
		//	std::cout     <<   game_numbers[j] << ",";   
		//}  

		//std::cout<< ">" <<std::endl;
	}   

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -