| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 512 人关注过本帖
标题:大家帮我看看魔方阵问题错在哪了
取消只看楼主 加入收藏
王叫兽Joe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-5-23
结帖率:33.33%
收藏
 问题点数:0 回复次数:3 
大家帮我看看魔方阵问题错在哪了
#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
int main()
{
    int m;
    scanf("%d",m);
    if(m%2==0||m==1) return ERROR;
    else return OK;
        int a[m][m],i,j,k;
        for(i=0;i<m;i++)
        for(j=0;j<m;j++)
        {
            a[i][j]=0;
        }               /*令所有元素都为0*/
        j=(m-1)/2;
        a[0][j]=1;    /*令第一行中间一列元素为1*/
        for(k=2;k<=m*m;k++)
        {
           if((i-1+m)%m!=0)
              {
                  i=(i-1+m)%m;
                  if((j-1+m)%m!=0)
                  j=(j-1+m)%m;
             }
           if (a[i][j]!=0)
           {
                i=(i+2)%m;
                j=(j+1)%m;
           }
           a[i][j]=k;
        }
        for(i=0;i<m;i++)    /*输出数组*/
        {
            for(j=0;j<m;j++)
            printf("%5d",a[i][j]);
            printf("\n\n");
        }
}
搜索更多相关主题的帖子: include return 元素 
2014-06-05 21:53
王叫兽Joe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-5-23
收藏
得分:0 
我把主要的思想写一下,希望有大神能帮帮忙
    由1开始填数,将1放在第0行的中间位置。
    将魔方阵想象成上下、左右相接,每次往左上角走一步,会有下列情况:
    左上角超出上方边界,则在最下边相对应的位置填入下一个数字;
    左上角超出左边边界,则在最右边相应的位置填入下一个数字;
    如果按上述方法找到的位置已填入数据,则在同一列下一行填入下一个数字。

由三阶魔方阵的生成过程可知,某一位置(x,y)的左上角的位置是(x-1,y-1),如果x-1≥0,不用调整,否则将其调整为x-1+m;同理,如果y-1≥0,不用调整,否则将其调整为y-1+m。所以,位置(x,y)的左上角的位置可以用求模的方法获得,即:
x=(x-1+m)%m
y=(y-1+m)%m
如果所求的位置已经有数据了,将该数据填入同一列下一行的位置。这里需要注意的是。此时的x和y已经变成之前的上一行上一列了,如果想变回之前位置的下一行同一列,x需要跨越两行,y需要跨越一列,即:
x=(x+2)%m
y=(y+1)%m
2014-06-06 09:33
王叫兽Joe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-5-23
收藏
得分:0 
回复 3 楼 TAAAAB
你的方法是依次往右上找元素,我的方法是左上找元素,原题的要求就是如此
2014-06-06 15:56
王叫兽Joe
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-5-23
收藏
得分:0 
回复 6 楼 TAAAAB
移动之后i-1如果>=0,没有问题,如果小于0,就需要调整位置为i-1+m,所以直接用求余包含了两种情况
2014-06-06 18:28
快速回复:大家帮我看看魔方阵问题错在哪了
数据加载中...
 
   



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

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