zoukankan      html  css  js  c++  java
  • ZJUT OJ 1005

    做幻方 
    Time Limit:1000MS  Memory Limit:1024K

    Description:

    Apple最近迷上了做幻方,Apple还是个中高手,只要你说个奇数N,他就能把N*N的幻方做出来。其实你可以比他做得更好的。Apple总是画得很乱,而你可以利用程序排得很整齐^_^ 幻方的要求:每一行,每一列,还有两条斜线上数字的和都相等。

    Input:

    每行有一个数N(0< N < 30),输入0结束。

    Output:

    输入一个奇数,输出一个幻方,每个数占3格,顺序参照样板输出,输出完以后加一个回车。

    Sample Input:

    5
    1
    0
    
    

    Sample Output:

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

    Hint:

    如果不会做幻方的请从1开始数到最后,相信你会发现其中的规律。当然输出也要按照这样的格式。

    Source:

    Zhang Anping
     
    code :
     1 /*
     2 本题中需要注意幻方只能是题中所给出的格式,输出与其对称的格式将会WA。 
     3 代码中被注释掉的部分和未被注释掉的部分,功能其实是相同的,两个代码输出的幻方格式成上下对称。 
     4 */
     5 #include <iostream>
     6 #include<iomanip>
     7 using namespace std;
     8 
     9 int main()
    10 {
    11 /*
    12     int m = 0;
    13     for (int n;cin >> n;) {
    14         if (n == 0) break;
    15         int magicSquare[30][30] = {0};
    16         magicSquare[0][n / 2] = 1;
    17         int pre_row = 0,
    18             pre_col = n / 2;
    19         for (int i = 2; i <= n * n; i++) {
    20             int row = pre_row - 1,
    21                 col = pre_col + 1;
    22             row = (row < 0 ? n + row : row) % n;
    23             col = col % n;
    24             if (magicSquare[row][col] != 0) {
    25                 row = pre_row + 1;
    26                 col = pre_col;
    27             }
    28             pre_row = row;
    29             pre_col = col;
    30             magicSquare[row][col] = i;
    31         }
    32         for (int i = 0; i < n; i++) {
    33             for (int j = 0; j < n; j++) {
    34                 cout << setw(3) << magicSquare[i][j];
    35             }
    36             cout << endl;
    37         }
    38         if (m++ == 0) cout << endl;
    39     }
    40 */
    41     int m = 0;
    42     for (int n;cin >> n;) {
    43         if (n == 0) break;
    44         int magicSquare[30][30] = {0};
    45         magicSquare[n - 1][n / 2] = 1;
    46         int pre_row = n - 1,
    47             pre_col = n / 2;
    48         for (int i = 2; i <= n * n; i++) {
    49             int row = pre_row + 1,
    50                 col = pre_col + 1;
    51             row = (row < 0 ? n + row : row) % n;
    52             col = (col < 0 ? n + col : col) % n;
    53             if (magicSquare[row][col] != 0) {
    54                 row = pre_row - 1;
    55                 col = pre_col;
    56             }
    57             pre_row = row;
    58             pre_col = col;
    59             magicSquare[row][col] = i;
    60         }
    61         for (int i = 0; i < n; i++) {
    62             for (int j = 0; j < n; j++) {
    63                 cout << setw(3) << magicSquare[i][j];
    64             }
    65             cout << endl;
    66         }
    67         cout << endl;
    68     }
    69 }
  • 相关阅读:
    MVVM
    vue-cli初始化项目2.x|3.x
    逻辑覆盖
    white box白盒测试
    black box黑盒测试
    总结回顾js arr的常见方法以及相关的使用场景(一)
    js 原生功底 (一)
    markdown 语法总结(一)
    阿里一面,面试官想看到的究竟是什么,带你揭秘!!!!
    关于Axios 源码你想了解的 在这儿
  • 原文地址:https://www.cnblogs.com/findingsea/p/2677184.html
Copyright © 2011-2022 走看看