MiniKano的小窝


Kano YYDS ! ! ! 

使用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
能在游戏里面碰到算法问题也算是比较新鲜的了 :鹿乃_???:

点赞

回复 站元素主机 取消回复

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