奇数幻方的做法

我在以前做python时就做过这个,非常有趣,废话不多说,直接上代码。

# include <iostream>
# include <cstring>
using namespace std;
int main(){
    int a;
    cin >> a;
    int sz1[a][a], h = 0, l = int(a / 2 - 0.5 + 1);
    memset(sz1, 0, sizeof(sz1));
    sz1[0][int(a / 2 - 0.5 + 1)] = 1;
    for (int k = 2; k <= a * a; k++){
        h--;
        l++;
        if (h == -1 && l != a){
            h = a - 1;
        }
        if (l == a && h != -1){
            l = 0;
        }
        if (sz1[h][l] != 0){
            h += 2;
            l--;
        }
        if (h == -1 && l == a){
            h += 2;
            l--;
        }
        sz1[h][l] = k;
    }
    for (int m = 0; m < a; m++){
        for (int n = 0; n < a; n++){
            printf("%-4d ", sz1[m][n]);
        }
        cout << "\n";
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值