| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 641 人关注过本帖
标题:[求助]谁能帮我解释一下这个程序,还有它的高明的算法呀?
取消只看楼主 加入收藏
huntsmen
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2004-9-4
收藏
 问题点数:0 回复次数:0 
[求助]谁能帮我解释一下这个程序,还有它的高明的算法呀?

1. 奇数魔方阵: 把整数 1 到 n2 ( n 为奇数,n的平方)排成一个 n*n 方阵,使方阵中的每一行、每一列以及对角线的数之和都相同。

#include <stdio.h> #include <stdlib.h>

void main() { int n = 0; int i = 0, j = 0; int x = 0, y = 0; printf("Input the magic number n:"); scanf("%d", &n);

//分配二维数组空间 int** array = (int**)malloc(sizeof(int*)*n);

for (i = 0; i < n; i++ ) { array[i] = (int*)malloc(sizeof(int)*n); }

//x, y 初始化为'1'存放的位置 x = n/2; y = -1;

for (i = 0; i < n; i++ ) { //设置1,6,11,16,21....存放的位置并赋值 j = i*n + 1; y = (y + 1) % n; array[x][y] = j;

//设置 2,3,4,5; 7,8,9,10....的存放位置并赋值 for ( j = i*n + 2; j <= (i+1)*n; j++ ) { x = (x + 1) % n; y = (y-1+n) % n; array[x][y] = j; } }

//输出魔幻方块 for ( i = 0; i < n; i++ ) { for ( j = 0; j < n; j++ ) { printf("%d\t", array[i][j]); } printf("\n"); } }

这个是在VS.NET2002环境下编译运行成功的!

谁帮我解释一下这个程序呀,这个魔方阵有什么规律可寻呀, 1:它为什么要要先确定1,6,11……的位置呀?

2:开辟空间为什么int** array = (int**)malloc(sizeof(int*)*n)中的int 后面有两个*东西呀?我在课本上看见的都是(int*)malloc(sizeof(int))这样的一个*的……

搜索更多相关主题的帖子: 高明 算法 解释 
2005-04-07 12:39
快速回复:[求助]谁能帮我解释一下这个程序,还有它的高明的算法呀?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015734 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved