社区
C语言
帖子详情
这个问题怎么解决?
zqpsswh
2004-05-02 08:39:32
要求输入N 自动打出1到N^2的数的魔方
就是每行 每列 每对角线的和相等
只能用循环和条件语句实现
我想了很久......
...全文
57
3
打赏
收藏
微信扫一扫
点击复制链接
分享
下载分享明细
分享
举报
写回复
3 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hslinux
2004-05-03
找找以前的帖子,,奇偶魔方都有
打赏
举报
回复
赞
jmlt1983
2004-05-02
有4条规则:
1。在奇数阵中间的位置填1
2。在1的左上方或右上方填入2(注意填入方向要一致)
3。若有数字1存在,无法填入数字4时,数字4填入应在3的下方
- 1 -
- - 3
2 - 4 -为空,填入顺序为1,2,3...........
4。当数字填到左上方时,下一个数字自动填入到该数字的下方
举例:
6 1 -
7 5 3
2 - 4
这样根据规则就可以编了
打赏
举报
回复
赞
allsword
2004-05-02
比较困难
我这儿有奇数的思路:
对于方阵问题总结如下:
"1"总是在第一个行的中间;对于其他自然数,目前数的右上方是下一个数的位置,
如果目前数的右上方已被其他数占据,则下一数在目前数的正下方;如果目前数
在第一行,但不在最右侧,则下一数在最后一行,列数右移一列;如果目前数在
第一行的最右侧,则下一数在目前数的下侧;如果目前数在其他行的最右侧,则
下一数在上一行的最左侧。
#include <iostream.h>
const int N=15;
void main()
{
int i,j,k,m,n;
int G[N][N];
cout<<"Input the odd number you want!"<<endl;
cin>>m;
if ((m>0)&&(m%2))
{
cout<<"your inputed number is "<<m<<endl;
n=m*m;
j=0;
k=m/2;
for (i=1;i<=n;i++)
{
G[j][k]=i;
if(i%m==0)
if(j==m-1)
j=0;
else j++;
else
{
if(j==0)
j=m-1;
else j--;
if (k==m-1)
k=0;
else k++;
}
}
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
cout.width(5);
cout<<G[i][j];
}
cout<<endl;
}
}
else cout<<"the number you inputed is error!"<<endl;
}
打赏
举报
回复
赞
相关推荐
算法
问题
大家好! 我有个魔方数的
问题
想请教: 即:1到N*N个数,排成N行N列,要求每行、每列及对角线的数之和相等! 有什么好的算法(N可能为偶数)。 flyxuyj@sina.com
魔方
问题
一个魔方(Magic Square)是由一个1到n^2的整数构成的n*n矩阵,其中每行、每列以及两个对角线上的数字之和相等。如下面是n=5的魔方,行、列、对角线的和分别是75: 15 8 1 24 17 16 14 7 5 23 22 20 13 6 4 3 21 19 12 10 9
Help!!!!
大家好! 我有个魔方数的
问题
想请教: 即:1到N*N个数,排成N行N列,要求每行、每列及对角线的数之和相等! 有什么好的算法(N可能为偶数)。 flyxuyj@sina.com
Help!!!!!!!!!!!!!!!
大家好! 我有个魔方数的
问题
想请教: 即:1到N*N个数,排成N行N列,要求每行、每列及对角线的数之和相等! 有什么好的算法(N可能为偶数)。 flyxuyj@sina.com
奇数阶魔方
问题
题目来自《数据结构基础——C语言版》 题目 魔方是n x n 的矩阵,每个单元取整数值,范围从1到n2 ,要求每行每列,以及两条对角线的和都相等。下图所示为 n = 5 的魔方,相等的和数是65。 我不会做,但是课本给出了求奇数阶魔方的方法。 Coxeter提出如下生成奇数阶(n是奇数)魔方的方法: 开始时,在魔方第一行的中间一格放1.然后重复以下步...
发帖
C语言
微信扫一扫
点击复制链接
分享社区
下载分享明细
6.6w+
社区成员
24.2w+
社区内容
C语言相关问题讨论
社区管理员
加入社区
帖子事件
创建了帖子
2004-05-02 08:39
社区公告
暂无公告