标题:请问怎么输出魔方阵
只看楼主
梦幻小子
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-4-2
 问题点数:0 回复次数:11 
请问怎么输出魔方阵

请问怎么输出魔方阵!谢谢

搜索更多相关主题的帖子: 魔方 输出 
2007-04-03 21:13
梦幻小子
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-4-2
得分:0 

顶上去先

2007-04-04 10:31
w362034710
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2006-12-2
得分:0 
# include<stdio.h>
# define size 3
void main()
{
int i=0,j,k,n;
int mat[size][size];
n=size;
j=n/2;
for(k=1;k<=n*n;k++)
{
mat[i][j]=k;
if(k%n==0)
i=(i+1)%n;
else
{
i=(i-1+n)%n;
j=(j+1)%n;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%2d",mat[i][j]);
printf("\n");
}
return;
}
2007-04-04 11:02
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
得分:0 
魔方阵也分很多种!
请问LZ要打印哪一种啊?

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-04 13:03
梦幻小子
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-4-2
得分:0 
回复:(I喜欢c)魔方阵也分很多种!请问LZ要打印哪一...
横,垂,斜加起来相等的那中啊!
2007-04-04 13:26
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
得分:0 


#include <math.h>
#include <stdio.h>

main()
{int i,j,m,n,k,a[10][10];
scanf("%d",&n);
m=n-1;
k=n/2;
for(i=1;i<=n*n;i++)
{
a[m][k]=i;
k++;
m++;
if(k>=n) k=0;

if(m>=n) m=0;
if((i+n)%n==0)
{k=k-1;
m=m-2;
if(k<0)k=k+n;
if(m<0)m=m+n;
}
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
getch();
}


这个是比较笨拙的方法...
一步一步附值的~``

[此贴子已经被作者于2007-4-4 13:32:42编辑过]


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-04 13:29
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
得分:0 

/* 标准文档模板 */

#include "Stdio.h"
#include<stdio.h>
void main()
{int a[15][15],i,j,n=0,k;
while(n%2==0||n<=0||n>15)
{scanf("%d",&n);
printf("\n");}
for(i=0;i<15;i++)
{for(j=0;j<15;j++)
a[i][j]=0;}
for(i=(n-1),j=(n-1)/2,k=2,a[i][j]=1;k<=n*n;k++)
if(a[(++i)%n][(++j)%n]==0)
a[i%n][j%n]=k;
else {a[(i=i-2)%n][(--j)%n]=k;}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");}
getch();
}


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-04 13:30
梦幻小子
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-4-2
得分:0 
谢谢拉!不是很懂
2007-04-04 22:28
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
得分:0 

奇数阶魔方阵已经有线性代数的高人总结出了一般规律,就是根据N算出行矩阵和列矩阵,再按照一定算法就可写出,我的帖子里提到过:
http://bbs.bc-cn.net/viewthread.php?tid=126313&star=at#
不过偶数阶现在除了穷举我还没想到更好的方法!


“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-04-04 23:06
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
得分:0 
巧填奇数阶幻方(魔方阵)[转]2007-01-03 17:57 一、什么叫幻方?
(通俗点说)把一些有规律的数填在纵横格数都相等的正方形图内,使每一行、每一列和每一条对角线上各个数之和都相等。这样的方阵图叫做幻方。
幻方又分为奇数阶幻方和偶数阶幻方。奇数阶幻方是指横行、竖列都是单数(即3、5、7、9……)的方阵图。偶数阶幻方是指横行、竖列都是双数(即4、6、8、10……)的方阵图。
二、奇数阶幻方的填法。
奇数阶幻方中最简便的一种就是三阶幻方,又称“九宫图”。
平常我们遇到这类题都是用分析、分组、尝试的方法推出,这种方法较麻烦,如果是五阶幻方、七阶幻方就更困难了。
有一种方法不仅能很快地填出三阶幻方,还能很快地填出五阶幻方、七阶幻方、九阶幻方……那就是“口诀法”
口 诀
“1”坐边中间,斜着把数填;
出边填对面,遇数往下旋;
出角仅一次,转回下格间。
注意:
(1)这里的“1”,是指要填的这一列数中的第一个数。
(2)“1”坐边中间,指第一个数要填在任何一边的正中间的空格里。
(3)从1到2时,必须先向边外斜(比如:第一个数填在上边的正中间,填第二个数时,要向左上方或右上方斜),填后面的数时也要按照同样的方向斜。


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-04 23:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-129009-1-1.html




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

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