用分治法求循环赛日程安排,得不到想要的结果,请大虾们帮忙改改~~
时间:2011-12-13
来源:互联网
             #include<iostream>
#include<math.h>
using namespace std;
const int MAX=100;
int a[MAX][MAX];
void main()
{
int p,q,k,m;
cout<<"请输入k值"<<endl;
cin>>k;
m= pow(2,k);
int n=2;
int t;
int i,j;
  
//求解两个选手比赛日程,得到左上角元素
a[1][1]=1;
a[1][2]=2;
a[2][1]=2;
a[2][2]=1;
for(t=1;t<k;t++)//迭代处理,依次处理2的平方,……,2的k次方
{
int temp=n;
n=n*2;
//填坐下角元素
for(i=temp+1;i<=n;i++)
for(j=1;j<=temp;j++)
a[i][j]=a[i-temp][j]+temp;//左下角元素和左上角元素的对应关系
//将左下角元素抄到右上角
for(i=1;i<temp;i++)
for(j=temp+1;j<=n;j++)
a[i][j]=a[i+temp][(j+temp)%n];
//将左上角元素抄到右下角
for(i=temp+1;i<=n;i++)
for(j=temp+1;j<=n;j++)
a[i][j]=a[i-temp][j-temp];
}
for(p=1;p<=m;p++)
{
for(q=1;q<=m;q++)
{
cout<<a[p][q]<<" ";
}
cout<<endl;
}
}
            
            #include<math.h>
using namespace std;
const int MAX=100;
int a[MAX][MAX];
void main()
{
int p,q,k,m;
cout<<"请输入k值"<<endl;
cin>>k;
m= pow(2,k);
int n=2;
int t;
int i,j;
//求解两个选手比赛日程,得到左上角元素
a[1][1]=1;
a[1][2]=2;
a[2][1]=2;
a[2][2]=1;
for(t=1;t<k;t++)//迭代处理,依次处理2的平方,……,2的k次方
{
int temp=n;
n=n*2;
//填坐下角元素
for(i=temp+1;i<=n;i++)
for(j=1;j<=temp;j++)
a[i][j]=a[i-temp][j]+temp;//左下角元素和左上角元素的对应关系
//将左下角元素抄到右上角
for(i=1;i<temp;i++)
for(j=temp+1;j<=n;j++)
a[i][j]=a[i+temp][(j+temp)%n];
//将左上角元素抄到右下角
for(i=temp+1;i<=n;i++)
for(j=temp+1;j<=n;j++)
a[i][j]=a[i-temp][j-temp];
}
for(p=1;p<=m;p++)
{
for(q=1;q<=m;q++)
{
cout<<a[p][q]<<" ";
}
cout<<endl;
}
}
作者: majing321 发布时间: 2011-12-13
            作者: xmx2009 发布时间: 2011-12-13
 相关阅读 更多  
      
    热门阅读
-  
 office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
          阅读:74
 -  
 如何安装mysql8.0
          阅读:31
 -  
 Word快速设置标题样式步骤详解
          阅读:28
 -  
 20+道必知必会的Vue面试题(附答案解析)
          阅读:37
 -  
 HTML如何制作表单
          阅读:22
 -  
 百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
          阅读:31
 -  
 ET文件格式和XLS格式文件之间如何转化?
          阅读:24
 -  
 react和vue的区别及优缺点是什么
          阅读:121
 -  
 支付宝人脸识别如何关闭?
          阅读:21
 -  
 腾讯微云怎么修改照片或视频备份路径?
          阅读:28
 















