用分治法求循环赛日程安排,得不到想要的结果,请大虾们帮忙改改~~
时间: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