分治法,循环赛日程表
来源:互联网 发布:linux怎么运行sh脚本 编辑:程序博客网 时间:2024/03/28 21:52
#include<stdio.h>
#define N 64
void GameTable(int k,int a[][N])
{
//n=2^k(k>=1)个选手参加比赛,二维数组a表示日程安排,数组下标从1开始
int n=2;//k=0,两个选手比赛日程可直接求得
//求解两个选手比赛日程,得到左上角元素
a[1][1]=1;a[1][2]=2;
a[2][1]=2;a[2][2]=1;
int i,j,t;
for(t=1;t<k;t++)//迭代处理,依次处理2^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(i=1;i<=n;i++)//显示日程表
for(j=1;j<=n;j++)
{
printf("-%d",a[i][j]);
if(j==n)
printf("\n");
}
}
int main()
{
int a[N][N];
int k;
printf("输入选手的个数:(注意为2的平方)");
scanf("%d",&k);
GameTable(k,a);
}
#define N 64
void GameTable(int k,int a[][N])
{
//n=2^k(k>=1)个选手参加比赛,二维数组a表示日程安排,数组下标从1开始
int n=2;//k=0,两个选手比赛日程可直接求得
//求解两个选手比赛日程,得到左上角元素
a[1][1]=1;a[1][2]=2;
a[2][1]=2;a[2][2]=1;
int i,j,t;
for(t=1;t<k;t++)//迭代处理,依次处理2^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(i=1;i<=n;i++)//显示日程表
for(j=1;j<=n;j++)
{
printf("-%d",a[i][j]);
if(j==n)
printf("\n");
}
}
int main()
{
int a[N][N];
int k;
printf("输入选手的个数:(注意为2的平方)");
scanf("%d",&k);
GameTable(k,a);
}
1 0
- 循环赛日程表-分治法
- 分治法,循环赛日程表
- 循环赛日程表《分治法》
- 循环赛日程表--分治法
- 循环赛日程表 分治法
- 分治法:循环赛日程表问题
- [算法之分治法应用] 循环赛日程表
- 分治法——循环赛日程表
- 分治法--循环赛日程表
- 分治法——循环赛日程表
- 用分治法解决循环赛日程表
- 分治算法--循环赛日程表
- 循环赛日程表(分治)
- 循环赛日程表(分治)
- 分治中循环赛日程表
- 循环赛日程表(分治)
- 分治---循环赛日程表
- 分治策略:循环赛日程表问题
- 笔记2(字符串翻转)
- OCP-1Z0-053-V13.02-445题
- android 语言国际化 + 点击按钮出现menu + 点击menu出现dialog对话框 + radiobutton 点击事件
- zeromq
- xml、properties配置文件的读取
- 分治法,循环赛日程表
- jquery学习心得,常用的操作
- android JNI学习六
- cocos2dx-jsb 跨语言调用
- notepad++6.5中文绿色汉化版下载
- PB9核心之——数据窗口对象使用
- opencv基本操作
- Java判断给定日期哪个大,哪个小;日期类型:YYYY-MM-DD
- MTK android 可修改IMEI方法