UESTC 1607 大学生足球联赛 构造、蛇形安排赛程表

ProLightsfx 2017-6-11 133 6/11

大学生足球联赛 构造、蛇形安排赛程表

Source

2017 UESTC Training for Dynamic Programming

UESTC 1607 大学生足球联赛

 

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

- THE END -

ProLightsfx

11月21日19:11

最后修改:2024年11月21日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论