资源简介
笔者用5中方法解决循环赛日程表问题。
一、n=2^k,采用递归,指针数组解决,左上角和左下角填充,剩下的copy。
二、n=2^k,采用递归,指针数组解决,左上角填充,剩下的copy。
三、n为任意数,采用递归,指针数组解决。
四,n为任意数,采用多边形轮转法。
五、n为任意数,是笔者对多边形轮转法的优化。

代码片段和文件信息
#include//2018.4.23 黄云华分治法求循环次赛日程表
using namespace std;
void Array_new(int **p_arrayint amount)
{//数据初始化 并构给第一行第一列赋值
for(int i=0;i {
p_array[i]=new int[amount];
p_array[0][i]=i+1;
p_array[i][0]=i+1;
}
}
void Array_copy(int **p_arrayint a_xint a_yint b_xint b_yint lengthint add=0)
{//数据初始化 并构建一个2*2初始矩阵
for(int i=0j;i for(j=0;j p_array[b_x+i][b_y+j]=p_array[a_x+i][a_y+j]+add;
}
void Game_Table(int **p_arrayint xint yint length)//分治法中的分
{
if(length==1)
return;
Game_Table(p_arrayxylength/2);//填充左上
Game_Table(p_arrayx+length/2ylength/2);//填充左下
Array_copy(p_arrayxyx+length/2y+length/2length/2);//左上拷贝至右下
Array_copy(p_arrayx+length/2yxy+length/2length/2);//左下拷贝至右上
}
void show(int **p_arrayint xint yint length)
{
for(int i=xj;i {
for(j=y;j cout< cout<<“\n“;
}
}
int main()
{
int amount;
cout<<“请输入学生总人数\n“;
cin>>amount;
int **p_array=new int*[amount];
Array_new(p_arrayamount);
Game_Table(p_array00amount);
show(p_array00amount);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1242 2018-04-25 22:29 循环比赛日程表\hyh_genda.cpp
文件 3070 2018-04-26 21:06 循环比赛日程表\hyh_genda_any.cpp
文件 1118 2018-04-25 22:29 循环比赛日程表\hyh_genda_plus.cpp
文件 1082 2018-04-27 00:28 循环比赛日程表\hyh_genda_polygonal.cpp
文件 1342 2018-04-27 00:39 循环比赛日程表\hyh_genda_polygonal_plus.cpp
目录 0 2018-04-27 08:18 循环比赛日程表\
- 上一篇:基于python实现巴特沃斯低通滤波
- 下一篇:opengl鼠标交互简单
相关资源
- 用VC6.0实现多边形扫描线填充算法
- c++多边形交并差运算
- 扫描线多边形填充算法实现
- C++ 多边形边缘填充算法
- mfc 任意多边形填充色
- 多边形扫描转换算法
- 计算机图形学多边形种子填充算法
- C++多边形有效边填充算法
- 多边形的扫描转换算法实现
- 计算机图形学简单多边形裁剪程序
- MFC多边形画法--计算机图形学
- 图形学实验 多边形的扫描转换 扫面线
- VC++的MFC计算机图形学点线多边形裁剪
- 多边形拓扑关系的建立
- 多边形合并c# c++
- 绘制多边形
- 多边形有效边表填充算法 c++
- 利用MFC进行多边形的绘制
- MFC实现的画多边形程序
- 算法设计实验报告-求最大子段和问题
- 交互式绘制多边形
- 计算机图形学(MFC)-多边形平滑填充
- 蛮力法、分治法和动态规划法设计最
- C++ 分治法解决邮局选址问题
- 点是否在多边形内判断的C语言代码
- 凸多边形最优三角剖分C语言编写 算法
- Bresenham画线连成多边形并填充
- 分治法—最近点对.cpp
- 多边形区域的扫描线填充、扫描线种
- 计算机图形学 多边形裁剪程序
评论
共有 条评论