纵横图
来源:互联网 发布:电脑怎么设置网络限制 编辑:程序博客网 时间:2024/06/10 08:52
//纵横图:此例来源于趣味数学。
/*纵横图是由1到n的2次方的正整数构成的n*n矩阵,其每一行,
每一列和对角线上的和相等。
当n为奇数时,H.Coxeter给出了一个用于生产纵横图的简单规则:
首先,在首行的中间填1;然后向其左上方移动,按增序方式在
空格中填写数字;如果离开了方格,则认为正方形的同一行或
同一列的头尾是相连的;如果走到某个小方格,而该格已填了
数,那么就改走到原方格的下面一个方格,继续。
*/
#include <iostream>
#include <iomanip>
using namespace std;
void Magic(int n)
//Creating a magic square of size n, n being odd
{
if(n%2==0)
{
cout << "n is even" << endl;
return;
}
int **square = new int* [n];//指向数组的指针
//动态二维数组
for(int i=0; i<n; i++)
square[i] = new int[n];
for(i=0; i<n; i++)
for(int j=0; j<n; j++)
square[i][j]=0;
square[0][(n-1)/2] = 1; //Middle of first row
//(i, j) is the current position
i = 0;
int j = (n-1)/2, k, l;
for (int key = 2; key <= n*n; key++)
{
//move up and left. The next two if statements
//may be replaced by the % operation if -1% is
//implemented to have value n-1
k = (0 != i) ? (i-1) : (n-1);
l = (0 != j) ? (j-1) : (n-1);
if (square[k][l] != 0)
i = (i+1) % n;
else
{
i = k;
j = l;
}
square[i][j] = key;
}
//Output the magic square
for(i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
cout << setw(5) << square[i][j];
cout << endl << endl;
}
for(i = 0; i < n; i++)
{
delete [] square[i];
square[i] = NULL;
}
delete [] square;
square = NULL;
}
int main()
{
Magic(9);
return 0;
}
- 纵横图
- 纵横图算法
- (纵横图问题)(n阶奇数幻方)
- 基于visual Studio2013解决C语言竞赛题之1094纵横图
- echarts折线图纵横轴采用类似定义{value}KB/s单位过长被遮挡
- 软件史纵横
- 线性控制理论纵横
- 卢乐群:心手双畅意纵横
- 纵横工作 2007.02.02
- VMR9AspectRatioMode 纵横比模式
- 概述纵横制电话交换机
- 中国科技纵横
- 纵横表转换学习
- 《科学人生纵横》有感
- 北京纵横盛世软件有限公司
- 纵横盛世软件有限公司介绍
- 《中国科技纵横》杂志
- 《中国科技纵横》杂志
- 执行SQL SELECT语句并本地存储行
- 3怎样从FTP服务器上下载文件
- 利用二进制求幂
- PHOTOSHOP打造vista毛玻璃效果
- 《Pro Spring》学习笔记之混淆的构造器注入
- 纵横图
- 在ring3下列举系统中已加载的驱动模块的信息
- P2P网络测量综述
- ORACLE SQL性能优化No3--ORACLE SQL性能优化系列
- 查看谁占用了80端口
- 转贴:路逢劍客須呈劍,不是詩人莫獻詩
- Windows环境下编译构造驱动程序的方法
- 对等网络测量和分析
- 常用正则表达式