大学生足球联赛 构造、蛇形安排赛程表
Source
2017 UESTC Training for Dynamic Programming
My Solution
构造法:蛇形安排赛程表
将1-N排成两竖列,每一轮同一行的为对手
保持1的位置不变,其他位置按顺(逆)时方向依次旋转
1 6 1 2 1 3 1 4 1 5
2 5 3 6 4 2 5 3 6 4
3 4 4 5 5 6 6 2 2 3
1 N
2 N-1
3 N-2
. .
. .
. .
N/2 N/2+1
时间复杂度 O(n^2)
空间复杂度 O(n)
#include
#include
using namespace std;
typedef long long LL;
const int MAXN = 66 + 8;
int a[MAXN][2];
int main()
{
#ifdef LOCAL
freopen("a.txt", "r", stdin);
//freopen("a.out", "w", stdout);
int T = 1;
while(T--){
#endif // LOCAL
//ios::sync_with_stdio(false); cin.tie(0);
int n, i, j, t;
//cin >> n;
scanf("%d", &n);
for(i = 1; i <= n/2; i++){
a[i][0] = i;
a[i][1] = n - i + 1;
}
for(i = 1; i < n; i++){
/*
for(j = 1; j <= n/2; j++){
printf("%d %dn", a[j][0], a[j][1]);
}
putchar('n');
*/
for(j = 1; j <= n/2; j++){
if(j != 1) putchar(' ');
printf("%d %d", a[j][0], a[j][1]);
}
putchar('n');
t = a[2][0];
for(j = 2; j < n/2; j++){ a[j][0] = a[j+1][0]; } a[n/2][0] = a[n/2][1]; for(j = n/2; j >= 2; j--){
a[j][1] = a[j-1][1];
}
a[1][1] = t;
}
#ifdef LOCAL
cout << endl;
}
#endif // LOCAL
return 0;
}
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/uestc-1607/
共有 0 条评论