幻方

奇阶幻方

实现这个矩阵
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

使用的方法-- 楼梯法

楼梯法

往右上移动
如果到了边界位置:
到最上一行,回到最下一行
到最右一列,回到最左一列
如遇到已经赋值过了的位置,则向下移动

特别注意
在右上角的位置时,使用楼梯法需特别注意
应向下移动 ,而不是到最左下角

代码实现

#include<stdio.h>
int main(){
    int a[5][5]={0};
	int b[5][5]={0};
    int i,j,k,cnt,x,y;
    cnt=1;
	x=0;y=2;

	while(cnt<26){
	//判断右上角的位置
		if(x==-1&&y==5){
			x=1;y=4;
		}
		//到最上一行,回到最下一行
		if(x<0){
			x=x+5;
		}
		//到最右一列,回到最左一列
	    if(y>4){
           y=y-5;
		}
		//判断是否已经赋值过
		if(b[x][y]==1){
			 x++;
			 x++;
			 y--;
		}
		//向右上移动
		 a[x][y]=cnt;
			 cnt++;
			 b[x][y]=1;
			 x--;
			 y++;
	}
	for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            printf("%2d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

不合理的地方希望在评论区提出 谢谢。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值