| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 842 人关注过本帖
标题:求关于6X6 矩阵的魔方阵的算法? 我已经写出来 奇数魔方阵 和4X4系列的魔方 ...
取消只看楼主 加入收藏
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:2 
求关于6X6 矩阵的魔方阵的算法? 我已经写出来 奇数魔方阵 和4X4系列的魔方阵 唯独 6X6 系列的魔方阵不清楚算法....
我写的 奇数魔方阵 代码
// 奇数魔方阵算法
#include<stdio.h>


#define N 5

int main(void)
{
    int a[N+1][N+1]={0};
    int i,j,key=1;

    i=0;
    j=(N+1)/2;
    for(key=1;key<=25;key++)    // 解法 第一个数字放在第一行第一列的正中央,然后向右(上)填,如果右上已有数字,则向下填...
    {    if((key%N)==1)   // 可判断 右上位置是否已经填上数字
         
            i++;
            
        else
        {   
            i--;
            j++;
        }
        if(i==0)    // 如果是边界 则到第N行
        i=N;
    if(j>N)       //如果是边界则到第1列
        j=1;
    a[i][j]=key;
    }
   
   
    for(i=1;i<=N;i++)
    {

        for(j=1;j<=N;j++)
            printf("%-4d",a[i][j]);
        printf("\n");
    }
    return 0;

}
//4N系列魔方阵代码
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    int i,j,s=0;
    int a[4][4]={0};


    printf("该4N矩阵为:\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
   
        {   
            s=s+1;
            a[i][j]=s;
        }

   
        
    }
    for(i=0;i<4;i++)     // 显示输入的四行四列的矩阵
    {
        for(j=0;j<4;j++)
            printf("%-4d",a[i][j]);
        printf("\n");
    }
printf("\n");


printf("4N魔方阵为:\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            if((i+1)%4==((j+1)%4)||((j+1)%4+(i+1)%4)==1) // 核心一步 判断该4x4矩阵的对角线
            {
                a[i][j]=17-a[i][j];    // 用该矩阵最大值 16 和最小值 1 之和 减去对角线上的值 就可得出魔方阵
            }
        }
    }

    for(i=0;i<4;i++)     // 显示转换后的四行四列的魔方阵
    {
        for(j=0;j<4;j++)
            printf("%-4d",a[i][j]);
        printf("\n");
    }

    printf("\n");
    return 0;
}
6X6 的该怎么想算法...
搜索更多相关主题的帖子: include 
2011-06-13 15:38
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
收藏
得分:0 
回复 2楼 hjywyj
谢谢提醒,有一个对角线的方式求错了。。。我再想想。。。
2011-06-13 17:09
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
收藏
得分:0 
#include<stdio.h>

int main(void)
{
    int i,j;

    int a[5][5]={0};

    for(j=1;j<=4;j++)
    {
        for(i=1;i<=4;i++)
        {    if((j%4==i%4)||(j%4+i%4)==1||(j%4+i%4)==5)
                a[i][j]=(4+1-i)*4-j+1;
            else
                a[i][j]=(i-1)*4+j;
        }
    }

    for(i=1;i<=4;i++)
    {
        for(j=1;j<=4;j++)
            printf("%-4d",a[i][j]);
        printf("\n");
        
    }
   
    return 0;
}
2011-06-13 17:23
快速回复:求关于6X6 矩阵的魔方阵的算法? 我已经写出来 奇数魔方阵 和4X4系列的 ...
数据加载中...
 
   



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

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