回型矩阵

回型矩阵

https://ac.nowcoder.com/acm/problem/22230

  • 题目描述
    给你一个整数n,按要求输出n∗n的回型矩阵

  • 输入描述:
    输入一行,包含一个整数n (1<=n<=19)

  • 输出描述:
    输出n行,每行包含n个正整数

  • 示例1
    输入:4
    输出:
    1 2 3 4
    12 13 14 5
    11 16 15 6
    10 9 8 7

  • 解题思路:
    主要考察的就是对于边界情况的判断,需要建立 n * n 的矩阵 arr 存储值,并且声明一个变量 k ,随着循环自增,每次循环的 k 值存储在 arr 内,最后再将 arr 数组按行打印即可。 while 循环的终止条件即为 k > n * n,并且要注意四个 for 循环中,必须有两个 for 循环(分别为左右循环和上下循环)的终止条件取等号,目的是确保能够到达循环终止前最后一个会使边界重叠的位置。

  • C# 代码:

    using System;
    class Program{
      static void Main(){
          string input;
          while((input = Console.ReadLine()) != null){
              int n = int.Parse(input);
              int[][] arr = new int[n][];
              for(int i = 0; i < n; i++) arr[i] = new int[n];
              int k = 1;
              int up = 0, down = n-1, left = 0, right = n-1;
              while (k <= n * n){
                  for (int i = left; i < right; i++) arr[up][i] = k++;
                  for (int i = up; i <= down; i++) arr[i][right] = k++;
                  for (int i = right-1; i >= left; i--) arr[down][i] = k++;
                  for (int i = down-1; i > up; i--) arr[i][left] = k++;
                  up++;
                  left++;
                  down--;
                  right--;
              }
              for(int i = 0; i < n; i++){
                  for(int j = 0; j < n; j++) Console.Write(arr[i][j] + " ");
                  Console.WriteLine();
              }
          }
      }
    }
全部评论

相关推荐

在努力的外卷侠很靠谱:怎么,大家都没保底吗?我这美团已经入职了,不说了,系统派单了。
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
双非一本失业第二年:《机器视觉垃圾分类》
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务