利用帝國軟件如何做網站qq空間秒贊秒評網站推廣
描述
n = 2 ^ k個選手
- 每個選手必須與其他n-1個選手各賽一次
- 每個選手一天賽一次
- 比賽打n-1天
思路
k = 3時的解
我們先進行假設:每個選手第一天和自己比,然后分解成4個子問題:
(1)14號的第14天,對手1~4號;
(2)14號的第58天,對手5~8號
(3)58號的第14天,對手5~8號;
(4)58號的第58天,對手1~4號
只有1個選手的子問題,直接返回,否則遞歸求解
進行合并
(3)可由(1)分別加4(n / 2)得到–前4“內戰(zhàn)”與后4“內戰(zhàn)”等價
(2)可由(3)得到–對手都是后4,對手矩陣可相同
(4)可由(1)得到–對手都是前4,對手矩陣可相同
代碼
#include<bits/stdc++.h>
using namespace std;
int n, arr[32][32];
void solve(int n){if(n == 1) return;int half = n >> 1;solve(half);for(int i = 0;i < half; i++){for(int j = 0;j < half; j++){arr[i + half][j] = arr[i][j] + half;arr[i][j + half] = arr[i + half][j];arr[i + half][j + half] = arr[i][j];}}
}
int main(){cin>>n;arr[0][0] = 1;solve(n);for(int i = 0;i < n; i++){for(int j = 1;j < n; j++)cout<<arr[i][j]<<" ";cout<<endl;}return 0;
}