• 魔方阵


    将1填在方阵第一行的中间, 即(1, (n+1)/2)的位置

    下一个数填在上一个数的主对角线的上方, 若上一个数的位置是(i,j), 下一个数应填在(i-1, j-1);

    若应填写的位置下标出界, 则用用 n替代 即若i-1 == 0 , i = n., 即若j-1 == 0 ,j = n., 

    若应填的位置没有出界, 但是有数据的话, 则应填在上一个数的下面 即取i1 = i+1, j1 = j

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    int main() {
        int n;
        int arr[100][100];
        while (scanf("%d", &n) != EOF) {
            memset(arr, 0, sizeof(arr));
            int i = 1;
            int j = (n+1)/2;
            for (int k = 1; k <= n*n; k++) {
                arr[i][j] = k;
                int a = i;
                int b = j;
                i = i-1;
                j = j-1;
                if (i == 0) {
                    i = n;
                }
                if (j == 0) {
                    j = n;
                }
                if (arr[i][j] > 0) {
                    i = a+1;
                    j = b;
                }
            }
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= n; j++) {
                    printf("%4d ", arr[i][j]);
                }
                printf("
    ");
            }
        }
    }
  • 相关阅读:
    BZOJ3781 小B的询问
    BZOJ3757 苹果树
    BZOJ1491 [NOI2007]社交网络
    BZOJ3754 Tree之最小方差树
    BZOJ1251 序列终结者
    BZOJ2259 [Oibh]新型计算机
    BZOJ1043 [HAOI2008]下落的圆盘
    D. 预定义变量
    A. 变量命名原则
    B. PHP变量的特点
  • 原文地址:https://www.cnblogs.com/a863886199/p/9778490.html
Copyright © 2020-2023  润新知