码迷,mamicode.com
首页 > 其他好文 > 详细

小代码3 魔方矩阵

时间:2016-03-10 01:47:48      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:magic 魔方打印

#include <stdio.h>
#include <stdlib.h>
 
#define N 4    //测试所用
 

void fun()
{
int a[9][9],r,c,num,n;  //最大9*9的矩阵  可以修改规模
n=N;
for(r=0;r<n;r++)
  for(c=0;c<n;c++)
   a[r][c]=0;
r=0;c=n/2;num=1;     
a[r][c]=num;             //定位第一个元素
while(num<n*n) 
 {
   num++;
   if(r==0&&c==n-1)r++;
   else 
{ r--;c++;
  if(r<0)r=n-1;          //不断定位
   if(c==n)c=0;
   if(a[r][c]!=0){r+=2;c--;}
}
 a[r][c]=num;            //根据定位 逐渐从1填到n*n

 }
for(r=0;r<n;r++)         //打印   n数据大时  需要调节%4d等格式化输出
  {for(c=0;c<n;c++)
     printf("%3d",a[r][c]);
   printf("\n");
  }
 

}
void main()
{
 
fun();
 
}
注意到magic(4)在matlab里只有一种打印方式  是有内部函数实现的,而4阶幻方是有不同的写法
这里难点在于循环定位,而基本性质1 求和项值为n(n*n+1)/2 而奇数阶中间值为(n*n+1)/2


小代码3 魔方矩阵

标签:magic 魔方打印

原文地址:http://sts609.blog.51cto.com/11227442/1749368

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!