优化后的代码示例
时间: 2024-02-25 14:57:35 浏览: 30
以下是对代码的优化:
```
#include <iostream>
#include <vector>
using namespace std;
// 生成比赛日程表
void generateSchedule(vector<vector<int>> &schedule, int n)
{
// 初始化表格第一行
for (int i = 1; i <= n; i++) {
schedule[1][i] = i;
}
int m = 1;
for (int s = 1; s <= n - 1; s *= 2, m *= 2) {
for (int i = 1; i <= n; i += 2 * m) {
for (int j = i; j < i + m; j++) {
int k = j + m;
schedule[s + m + j - i][s + k - i] = schedule[s + j - i][s + k - i - m];
schedule[s + m + k - i][s + j - i] = schedule[s + j - i][s + k - i];
}
}
}
}
// 打印比赛日程表
void printSchedule(const vector<vector<int>> &schedule)
{
cout << "比赛日程表:" << endl;
for (const auto &row : schedule) {
for (const auto &item : row) {
cout << item << " ";
}
cout << endl;
}
}
int main()
{
int n;
cout << "请输入要比赛的人数: ";
cin >> n;
// 计算比赛轮数
int rounds = 0;
for (int i = n; i > 1; i /= 2) {
rounds++;
}
// 计算比赛日程表的大小
int size = 1;
for (int i = 0; i < rounds; i++) {
size *= 2;
}
// 创建比赛日程表
vector<vector<int>> schedule(size + 1, vector<int>(size + 1));
generateSchedule(schedule, size);
// 打印比赛日程表
printSchedule(schedule);
return 0;
}
```
优化后的代码中,函数的命名更加清晰明了,变量名具有描述性,添加了注释,避免了魔法数字,使用了 STL 容器和算法,遵循了单一职责原则,避免了冗余的代码,提高了代码的可读性和可维护性。