循环赛程表【only code】

来源:互联网 发布:smtp 修改端口号 编辑:程序博客网 时间:2024/06/10 06:14
#include <cstdio> #include <cstring>#include <iostream>using namespace std;#define maxn 110int ans[maxn][maxn];void cal(int l,int r,int ll,int rr,int d){    int upmid=(r+l)>>1,leftmid=(rr+ll)>>1;    for(int i=l;i<=upmid;i++)        for(int j=leftmid+1;j<=rr;j++)            ans[j][i]=ans[j-d][i+d];    for(int i=upmid+1;i<=r;i++)        for(int j=leftmid+1;j<=rr;j++)            ans[j][i]=ans[j-d][i-d];}int main(){    int n;    while(cin>>n)    {        for(int i=1;i<=n;i++)        {            ans[1][i]=i;        }        for(int i=2;i<=n;i*=2)        {            for(int j=1;j<=n;j+=i)            {                cal(j,j+i-1,1,i,i>>1);            }        }        for(int i=1;i<=n;i++)        {            for(int j=1;j<=n;j++)                cout<<ans[i][j]<<" ";            cout<<endl;        }    }    return 0;}

0 0
原创粉丝点击