首页 > 编程语言 > 详细

填方阵算法

时间:2021-08-22 18:52:41      阅读:21      评论:0      收藏:0      [点我收藏+]

所谓的方阵,举个例子:3X3的方格上填1-9个数字,使每行、每列、每个对角线的数字相加的和相等。这个算法可以填3以上的奇数方阵,填方阵有口诀:

 1填左边正中央,依次斜填左上方,左边出格右侧填,上边出格下侧填,无处可填填右边。以下算法就是实现这个口诀(代码内有注释):

 

function SetMR(ct){
    var MR=new Array(ct*ct);
    var x_=0,y_=0,cur=Math.floor(ct/2)*ct;
    //口诀:1填左边正中央,依次斜填左上方,左边出格右侧填,上边出格下侧填,无处可填填右边
    MR[cur]=1;//1填左边正中央
    for(var i=2;i<ct*ct+1;i++){
        var t=cur;
        x_=Math.floor(cur/ct)-1;y_=cur%ct-1;
        if((y_<0)&&(x_>=0)){//左边出格右侧填
            y_=ct-1;
        }
        if((x_<0)&&(y_>=0)){//上边出格下侧填
            x_=ct-1;
        }
        cur=x_*ct+y_;
        if(((x_<0)&&(y_<0))||(MR[cur]>0)){//无处可填填右边
            cur=t+1;
        }
        MR[cur]=i;
    }
    for(var i=0;i<MR.length;i++){
        document.write(MR[i]+‘,‘);
        if((i+1)%ct==0){document.write(‘<br>‘);}
    }
}
//SetMR(5);

 

填方阵算法

原文:https://www.cnblogs.com/zhangxiny/p/15172272.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!