完整程序代码
#include <iostream>
#include <math.h>
using namespace std;
int calendar[100][100]; //日程表数组
void GameTable(int k, int a[100][100]);
void PrintTable(int k, int a[100][100]);
int main()
{
int k;
cout << "输入2^k个选手中k的值:";
cin >> k;
cout << "日程表如下" << endl;
GameTable(k, calendar);
PrintTable(k, calendar);
return 0;
}
void GameTable(int k, int a[100][100])
{
// n=2^k(k≥1)个选手参加比赛
//二维数组a表示日程安排,数组下标从1开始
int n = 2; //k=0,2个选手比赛日程可直接求得
//求解2个选手比赛日程,得到左上角元素
a[1][1] = 1; a[1][2] = 2;
a[2][1] = 2; a[2][2] = 1;
for (int t = 1; t < k; t++)
//迭代处理,依次处理2^2, …, 2^k个选手比赛日程
{
int temp = n; n = n * 2;
//填左下角元素
for (int i = temp + 1; i <= n; i++)
for (int j = 1; j <= temp; j++)
a[i][j] = a[i - temp][j] + tem