zoukankan      html  css  js  c++  java
  • 方阵

    题目:输入一个奇数n,打印出n行n列的方阵,要求同行同列同对角线相加都相等。

    列如:输入3,打印出下列方阵

          8 1 6

                    3 5 7

                    4 9 2

    代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 namespace Test2
     6 {
     7     class Program
     8     {
     9         static void Main(string[] args)
    10         {
    11             int n;
    12             Console.WriteLine("请?输º?入¨?一°?个?奇?数ºy:êo");
    13             n = Convert.ToInt32(Console.ReadLine());
    14             //判断n维数组的奇偶性
    15             if (n % 2 == 0)
    16             {
    17                 Console.WriteLine("输入有误,请输入一个正奇数");
    18                 n = Convert.ToInt32(Console.ReadLine());
    19             }
    20             
    21             int[,] a = new int[n, n]; //定义一个n*n阶的二维数组
    22                 //将每个宫格的数据都赋值为0
    23                 for (int a1 = 0; a1 < n; a1++)
    24                     for (int a2 = 0; a2 < n; a2++)
    25                     {
    26                         a[a1, a2] = 0;
    27                     }
    28                 //将第一行,中间一列的空赋值为1
    29                 a[0, n / 2] = 1;
    30                 int b1 = 0, b2 = n / 2;
    31                 //像宫格中填数,规则是右边一列,下面2行为下一个数出现的位置。
    32                 for (int b3 = 2; b3 <= n * n; b3++)
    33                 {
    34                     //0代表宫格中没有填充,所以判断下一个要填充的位置是否0                 if (a[(b1 + 2) % n, (b2 + 1) % n] == 0)
    35                     {
    36                         a[(b1 + 2) % n, (b2 + 1) % n] = b3;
    37                         b1 = (b1 + 2) % n;
    38                         b2 = (b2 + 1) % n;
    39                     }
    40                     else
    41                     {
    42                         a[(b1 + 1) % n, b2 % n] = b3;
    43                         b1 = (b1 + 1) % n;
    44                     }
    45                 }
    46                 //打印出填好数的数组
    47                 for (int a1 = 0; a1 < n; a1++)
    48                 {
    49                     for (int a2 = 0; a2 < n; a2++)
    50                     {
    51                         Console.Write(a[a1, a2] + "	");
    52                     }
    53                     Console.WriteLine();
    54                 }
    55             Console.Read();
    56         }
    57     }
    58 }
  • 相关阅读:
    [noip2010]关押罪犯 并查集
    双栈排序 noip2008
    欧拉函数
    中国剩余定理(孙子定理)
    求组合数
    线性素数筛
    洛谷 P2661 信息传递
    图的最短路
    Mzc和男家丁的游戏
    最佳旅游线路
  • 原文地址:https://www.cnblogs.com/lixiaokang-blog/p/7610636.html
Copyright © 2011-2022 走看看