循环赛日程表

 1 #include<iostream>
 2 using namespace std;
 3 #define MAX 100
 4 int a[MAX][MAX];
 5 void copy(int fx,int fy,int tx,int ty,int r)
 6 {
 7     int i,j;
 8     for(i=0;i<r;i++)
 9         for(j=0;j<r;j++)
10             a[tx+i][ty+j]=a[fx+i][fy+j];
11 }
12 void build(int n)
13 {
14     int i,j;
15     for(i=1;i<=n;i++)
16         a[0][i-1]=i;
17     for(i=1;i<n;i=i*2)
18     {
19         for(j=0;j<n;j=j+i*2)
20         {
21             copy(0,j,i,i+j,i);
22             copy(0,j+i,i,j,i);
23         }
24     }
25 }
26 void out(int n)
27 {
28     int i,j;
29     for(i=0;i<n;i++)
30     {
31         for(j=0;j<n;j++)
32             cout<<a[i][j]<<" ";
33         cout<<endl;
34     }
35 }
36 int main()
37 {
38     int n;
39     cin>>n;
40     build(n);
41     out(n);
42     return 0;
43 }

eg.

输入:

  8

输出:

  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

原文地址:https://www.cnblogs.com/xdbingo/p/4807067.html