循环赛日程表

循环赛日程表 (C++)

//
//Description:循环赛日程表
//
#include <iostream>
#include <math.h>
using namespace std;

int array[100][100];

void output(int k)
{
 	cout << "\n循环赛日程表为 " << endl;
 	for (int z = 1; z <= pow(2, k); z++)
	{
		for (int m = 1; m <= pow(2, k); m++)
		{
			cout << array[z] << '\t';
		}
		cout << endl;
	}
}

void ttt(int k, int  array[100][100])
{

	int n = 1;
	for (int i = 1; i <= k; i++)
		n *= 2;
	for (int p = 1; p <= n; p++)
		array[1][p] = p;
	int m = 1;

	for (int s = 1; s <= k; s++)
	{
		n /= 2;
		for (int t = 1; t <= n; t++)
		for (int a = m + 1; a <= 2 * m; a++)
		for (int b = m + 1; b <= 2 * m; b++)
		{
			array[a][b + (t - 1)*m * 2] = array[a - m][b + (t - 1)*m * 2 - m];
			array[a][b + (t - 1)*m * 2 - m] = array[a - m][b + (t - 1)*m * 2];
		}
		m *= 2;
	}
 }

void main()
{
	int k;
	cout << "输入k的数值(比赛人数为 2^k)\n" << endl;
	cin >> k;
	ttt(k, array);
	output(k);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值