奇数魔方矩阵的实现
来源:互联网 发布:天书世界披风进阶数据 编辑:程序博客网 时间:2024/05/13 08:35
/**************************************************程序:奇数魔方矩阵的实现完成者:小单完成时间:2013年5月7日***************************************************//********************************************************************算法思想 先在矩阵第一行中间的位置上放1,然后把数字按照升序沿着右 上角放置到矩阵中。如果越界了,就假设周围还有一个矩阵, 将数字放到那个位置上;如果那个位置已经被占据了,就跳过 该位置放到下面的位置,然后重新按照原来的方法放。 具体思想: (1) 将1放在第一行中间一列; (2) 从2开始直到n×n止各数依次按下列规则存放: 按 45°方向行走,如向右上 每一个数存放的行比前一个数的行数减1,列数加1 (3) 如果行列范围超出矩阵范围,则回绕。 例如1在第1行,则2应放在最下一行,列数同样加1; (4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时, 则把下一个数放在上一个数的下面。*********************************************************************/#include <stdio.h>#define N 3int main(){int row = 0;int col = N/2;int cnt = 1;int OddMagicMatrix[N][N]={0};OddMagicMatrix[row][col] = cnt;while(cnt < N*N){if((row - 1 < 0 )&& (col + 1 >= N)){OddMagicMatrix[row+1][col] = ++cnt;row = row +1;}else if(row - 1 < 0){OddMagicMatrix[N-1][col+1] = ++cnt;row = N-1;col = col + 1;}else if(col + 1 >= N){OddMagicMatrix[row - 1][0] = ++cnt;row = row - 1;col = 0;}else if(OddMagicMatrix[row-1][col+1] == 0){OddMagicMatrix[row-1][col+1] = ++cnt;row = row - 1;col = col + 1;}else{OddMagicMatrix[row+1][col] = ++cnt;row = row +1;}}for(int i = 0; i < N; ++i){for(int j = 0; j < N; ++j){printf("%4d",OddMagicMatrix[i][j]);}printf("\n");}return 0;}
0 0
- 奇数魔方矩阵的实现
- 奇数魔方阵的实现
- 魔方矩阵 (维数为奇数的情况)
- Matlab编程与数据类型 -- 奇数阶魔方矩阵的编程
- 平面魔方矩阵(奇数,右上方向)
- c语言奇数阶魔方阵的实现
- 魔方矩阵 C++实现
- c语言:实现奇数阶魔方阵
- 奇数阶的魔方阵分析
- 关于魔方矩阵的心得
- 魔方图最终版本奇数偶数均已实现
- 魔方矩阵
- 魔方矩阵
- 魔方矩阵
- 魔方矩阵
- 魔方矩阵
- 魔方矩阵
- 魔方矩阵
- 原创诗集一
- SQL Server, cannot alter the user 'dbo', 如何解决SQL Server不能更改dbo问题
- linux下的目录解析
- java 发送http请求
- JqGrid中文文档之TreeGrid
- 奇数魔方矩阵的实现
- 十条有用的 GoLang技术
- 生产环境下实践DDD中的规约模式
- 使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件
- iOS界面设计切图小结
- 基于oracle小数点前零丢失的问题分析
- C#开发和调用Web Service
- SSLStrip 终极版 —— location 瞒天过海
- 无穷背包问题