The Great Team
.
.
题意:给n给点,要求你给出任意一种连接方案,使得没有三个点有同样的度数
.
.
解法:其实仔细思考很简单,从n=2开始递推,如果n为奇数就不作处理,n为偶数就与前面所有点连一条边。这样可以保证只有第一第二个点度数相同,如果来到奇数位置,多一个度数为0的点,到达偶数时前面所有点的度数加1,而偶数位置那个点的度数一定为当前最大值,所以这样递推没有任意三个点的度数相同。
.
.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int n, m, a[40000][2] = {0};
int main() {
cin >> n;
m = 1;
a[1][0] = 1;
a[1][1] = 2;
for (int i = 3; i <= n; i++) {
if (i%2 == 1) continue;
for (int j = 1; j < i; j++) {
m++;
a[m][0] = i;
a[m][1] = j;
}
}
cout << m << endl;
for (int i = 1; i <= m; i++)
cout << a[i][0] << " " << a[i][1] << endl;
}