LOADING

使用C解决奇数行列魔方阵问题

魔方阵定义:

魔方阵是指每一行、每一列、对角线之和都为一个定值,比如3*3矩阵为:
8 1 6
3 5 7
4 9 2

其规律为:

  1. 下一个值在当前值的上一行的后一列
  2. 若当前值所在的行为第一行,则下一个值在最后一行的下一列
  3. 若当前值所在的列为最后一列,则下一个值在上一行的第一列
  4. 若下一个要存放的位置已经有值了,则下一个值则放在当前值当前列的下一行

代码:

#include<stdio.h>
#define N 3
int main(){
    int mfz[N][N]={0};//置零
    int i,j,x=0,y=N/2,count=1;
    while(count<=N*N){
        mfz[x][y]=count;
        i=x,j=y;
        if(i==0)i=N-1;//判断是否为第一行
        else i--;
        if(j==N-1)j=0;//判断是否为最后一列
        else j++;
        if(mfz[i][j]!=0){//判断要插入的位置是否有值
            i=x+1;
            j=y;
        }
        x=i,y=j;
        count++;
    }
    for(i=0;i<N;i++){
    for(j=0;j<N;j++)
    printf("%d\t",mfz[i][j]);
    printf("\n\n");
    }
}
/*
输出:
    8 1 6
    3 5 7
    4 9 2
*/

2021-9-6更新:

算法应用(不)

原神海衹岛石柱解密:

按照地图方向,上北下南,色块方位对应的数字:北为1,东为2,南为3,西为4
头顶有方块的石柱需要在方位数字的基础上+4
按照魔方阵的排列为:
4 3 8
9 5 1
2 7 6
能在游戏里面碰到算法问题也算是比较新鲜的了 :鹿乃_???:

  1. 站元素主机说道:
    Firefox Windows 10

    biubiu~~~赞一个

回复 站元素主机 取消回复

电子邮件地址不会被公开。必填项已用 * 标注