迴圈賽日程表

2021-06-23 01:52:54 字數 1480 閱讀 2275

設有n個選手進行迴圈比賽,其中n=2^m,要求每名選手要與其他n-1名選手都賽一次,每名選手每天比賽一次,迴圈賽共進行n-1天,要求每天沒有選手輪空。

輸入第一行為t,表示資料組數,對於每組資料就乙個m(1<=m<=10)。

對於每組輸入的m,輸出**形式的比賽安排表

1

3

1  2  3  4  5  6  7  8

2 1 4 3 6 5 8 7

3 4 1 2 7 8 5 6

4 3 2 1 8 7 6 5

5 6 7 8 1 2 3 4

6 5 8 7 2 1 4 3

7 8 5 6 3 4 1 2

8 7 6 5 4 3 2 1

hint

輸出每個數用%3d格式。

題意:根據示例來看:可以將每一行第一列看成每一位選手,後面的每一列是他需要和第幾位選手比賽;
當測試資料為1時:
1 2
2 1
測試資料為2是:
第一步:k=1;
1 2
2 1
第二步:k=2;
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
測試資料為3是:
第一步:k=1;
1 2
2 1
第二步:k=2;
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
第三步:k=4;
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1

即每一步向三個方向擴充套件,即a[i+k][j],a[i][j+k],a[i+k][j+k];
# include# includeusing namespace std;

int a[1100][1100];

int main()

{ //freopen("a.txt","r",stdin);

int t;

cin>>t;

while(t--)

{int m;

cin>>m;

int i,n=1;

for(i=0;i

迴圈賽日程表

對於書上那個日程表的實現,第三版的課本給出了迴圈實現的方法,不過這個表的生成明顯要用遞迴方法生成更為合適,此表如下 可以看到每次該錶的生成總可以分成四個字表的填充過程,初始化讓左邊第一列填充上之後,然後每一次先遞迴填充左上角的子表,然後再填充左下角的子表,然後右上和右下的子表用copy的方法填充,實...

迴圈賽日程表

問題描述 設有n 2 k個運動員要進行網球迴圈賽。現要設計乙個滿足以下要求的比賽日程表 1 每個選手必須與其他n 1個選手各賽一次 2 每個選手一天只能參賽一次 3 迴圈賽在n 1天內結束。自己可以嘗試畫表找出規律,這是4個運動員參加比賽的日程表。左上角四格自身的規律 左上角四格與左下角四格的規律 ...

迴圈賽日程表

問題描述 設有n 2 k個運動員要進行網球迴圈賽。現要設計乙個滿足以下要求的比賽日程表 1 每個選手必須與其他n 1個選手各賽一次 2 每個選手一天只能參賽一次 3 迴圈賽在n 1天內結束。請按此要求將比賽日程表設計成有n行和n 1列的乙個表。在表中的第i行,第j列處填入第i個選手在第j天所遇到的選...