生成幻方的小程序
来源:互联网 发布:中文在线发音软件 编辑:程序博客网 时间:2024/04/27 14:21
关于幻方的描述可以直接点击进入百度词条查看,这里不作赘述,下面一段代码是基于K.N.King书后提供的思路,整理所得。
“将幻方存储在一个二维数组中。起始时把数1放在0行的中间,剩下的数2,3,……,n²依次向上移动一行并向右移动一列。当可能越过数组边间时需要‘绕回’到数组的另一端。例如:如果需要把下一个数放到-1行,我们就将他存储到n-1行(最后一行);如果需要把下一个数放到n列,我们就将其存储到0列。如果某个特定的数组元素已被占用,那就把该数存储咋前一个数的正下方,”[1]
代码如下:
/***幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。*/#include<stdio.h>#include<stdlib.h>int** CreateMagicSquare( const int MaxSize );void Print( int** const Martrix, const int MaxSize );void MagicSquare( int** Martrix, const int MaxSize );void DeleteMartrix( int** Matrix, int MaxSize );int main(){
int N;int** msMartrix;printf("This program creates a magic square of a specified size.\n");printf("The size must be an odd number.\n");printf("Enter size of magic square: ");scanf("%d", &N);if( !(N&0x1) )printf("invalid entering.");else{msMartrix = CreateMagicSquare( N );MagicSquare( msMartrix, N );Print( msMartrix, N );DeleteMartrix( msMartrix, N );}return 0;}int** CreateMagicSquare( const int MaxSize ){int i, j;int** Martrix = (int**)malloc(MaxSize*sizeof(int));if( !Martrix )return NULL;for( i = 0; i < MaxSize; i++ )Martrix[i] = (int*)malloc(MaxSize*sizeof(int));for( i = 0; i < MaxSize; i++ )for( j = 0; j < MaxSize; j++ )Martrix[i][j] = 0;return Martrix;}void Print( int** const Martrix, const int MaxSize ){int i, j;for( i = 0; i < MaxSize; i++ ){for( j = 0; j < MaxSize; j++ ){printf("%5d ", Martrix[i][j] );}printf("\n");}}void MagicSquare( int** Martrix, const int MaxSize ){int i, line, row, next_line = 0, next_row = MaxSize/2;for( i = 1; i <= MaxSize*MaxSize; i++ ){Martrix[next_line][next_row] = i;line = (next_line - 1 + MaxSize) % MaxSize;row = (next_row + 1 + MaxSize) % MaxSize;if( Martrix[line][row] ){next_line = (next_line + 1) % MaxSize;}else{next_line = line;next_row = row;}}}void DeleteMartrix( int** Martrix, int MaxSize ){int i;for( i = 0; i < MaxSize; i++ )free(Martrix[i]);free(Martrix);}
0 0
- 生成幻方的小程序
- 幻方的生成
- 幻方的生成
- 小程序中使用的第三方库
- 一个简单的二维码生成小程序
- 100以内奇数幻方的生成
- 微信小程序生成携带参数的小程序码
- 第三方平台为授权的小程序帐号上传小程序代码一直报47001
- 改进后的幻方程序
- 小程序发布,你很方?
- 小程序发布,你方了吗?
- 小程序发布,你很方?
- 小程序发布,你很方?
- 小程序发布,你很方?
- 第三方平台发布小程序流程
- 自己用的jsp生成随机图片的小程序
- 一个简单的生成随机数的小程序
- 简单的 随机 生成不重复 数字的小程序
- Linux网络协议栈 — skb
- app冷启动缓慢出现白屏之终极解决方案—IntentService高效异步处理
- JXLS中文教程
- mysql处理高并发,防止库存超卖
- Intellij idea2017版本的新特性简介
- 生成幻方的小程序
- View转Bitmap
- C++中QMediaPlayer在QML中播放实现
- 数据结构-队列的基本操作实现
- 数组中只出现一次的数字
- [shader]纹理遮罩
- Maven搭建
- 深度学习之神经网络结构——残差网络ResNet
- Yii2.0数据库操作增删改查详解 [ 2.0 版本 ]