循环赛日程表 分治法
来源:互联网 发布:ubuntu 挂载命令 编辑:程序博客网 时间:2024/04/29 10:01
循环赛日程表 分治法
采用分治法, 逐步产生结果, 将 左上角的数字,拷贝到 右下角, 右上角的数字,拷贝到 左下角。
本程序以偶数计算,如果是奇数的话,那么就多增加一个,做轮空处理。
// 采用分治法#include <iostream>#include <cstdio>using namespace std;const int M = 1<<10;int a[M][M];void getTable(int k) // 2^k{ int n = 1<<k; // init for(int i=1; i<=n; ++i) a[1][i] = i; int m = 1; for(int s=1; s<=k; ++s) // 多少块 { n /= 2; for(int t=1; t<=n; ++t) // 一行循环几次 { for(int i=m+1; i<=2*m; ++i) { for(int j=m+1; j<=2*m; ++j) { int p = j + (t-1)*2*m; // (t-1)*2*m 是起始坐标 a[i][p] = a[i-m][p-m]; // 左上角的数字,拷贝到 右下角 a[i][p-m] = a[i-m][p]; // 右上角的数字,拷贝到 左下角 } } } m *= 2; }}void display(int k){ int n = 1<<k; for(int i=1; i<=n; ++i) { for(int j=1; j<=n; ++j) { printf("%d ", a[i][j]); } printf("\n"); } printf("\n");}int main(void){ int k = 3; getTable(k);d display(k); return 0;}
1 0
- 循环赛日程表-分治法
- 分治法,循环赛日程表
- 循环赛日程表《分治法》
- 循环赛日程表--分治法
- 循环赛日程表 分治法
- 分治法:循环赛日程表问题
- [算法之分治法应用] 循环赛日程表
- 分治法——循环赛日程表
- 分治法--循环赛日程表
- 分治法——循环赛日程表
- 用分治法解决循环赛日程表
- 分治算法--循环赛日程表
- 循环赛日程表(分治)
- 循环赛日程表(分治)
- 分治中循环赛日程表
- 循环赛日程表(分治)
- 分治---循环赛日程表
- 分治策略:循环赛日程表问题
- mvc--简单传值问题
- hdoj 1711 Number Sequence 【KMP】
- Leetcode: Count Complete Tree Nodes
- 1.3 Hello World
- #第二周1004结题报告#
- 循环赛日程表 分治法
- java中的数据类型
- 1.2 iOS平台开发限制和方式
- java异常的一些小知识
- adb 通信协议分析以及实现 (四) ADB shell 命令分析
- 1.1 iOS概述和架构
- mysql之索引(基本概念)
- CF_459B_PashmakAndFlowers
- 2、嵌入式开发之centos6.6配置nfs服务器