面试题-螺旋矩阵

imageimage

 

 

      小弟不才,若有高手路过,请多指点,不胜荣幸!

      话说,今日参加一家公司面试,要求实现如上如这种矩阵,初一看 ,就一矩阵,信誓旦旦的以为很简单呢,结果开始写代码的时候才发现这不是一般的矩阵,而是一只蜗牛呀,直接昏倒!老实说,小弟当时被这只蜗牛吓到了,然后果断放弃了,答了剩下的题。至于面试结果如何,且听有机会的时候分解!

     


面试受挫,但我不能停止前进的脚步,归来之后仔细研究了一下,发现了如下 规律:

 

image

      如此图所示,最外层的规律便是红线所示的四组数组成的,哈 ,既然发现了规律 ,那么繁琐的工作就交给计算机来完成了,那么,我就先咽下第一口芥末喽:

 

  


  Step1:实现红线1

 

image       image实现结果

首先,做些准备工作吧

 

   1:             int num=0;
   2:              Console.WriteLine("请输入矩阵的长度:");
   3:              string getKeys= Console.ReadLine();
   4:              int.TryParse(getKeys, out num); //输入数组长度
   5:              int[,] dataArray =new int[num,num]; 
   6:              int y=0;  //设置初始值,线一开始位置 坐标 x,y
   7:              int x=0;  
   8:              int number=1;   //蜗牛的起点

 

 

线1的实现就很简单了,简单的一个循环

   1:   
   2:   int startX = x;
   3:   int startY = y;
   4:   while (y < num-1)
   5:   {
   6:       dataArray[startX, y] = number;
   7:       number++;
   8:       y++;
   9:   }

 

  


Step2:实现整个外围

 

后面的坐标变化,还是直接上图吧:

image

既然知道了坐标是怎么变化的,那么就通过一些列的循环赋值吧!

   1:   int startX = x;
   2:   int startY = y;
   3:   while (y < num-1)
   4:   {
   5:       dataArray[startX, y] = number;
   6:       number++;
   7:       y++;
   8:   }
   9:   while (x < num - 1)
  10:   {
  11:       dataArray[x, y] = number;
  12:       number++;
  13:       x++;
  14:   }
  15:   
  16:   while (y > startX)
  17:   {
  18:   
  19:       dataArray[x, y] = number;
  20:       number++;
  21:       y--;
  22:   }
  23:   while (x > y)
  24:   {
  25:       dataArray[x, y] = number;
  26:       number++;
  27:       x--;
  28:   }

image

 

好一个偷心的贼,这样的结果谁都不能接受啊!下一步,u=3562504208,2026535318&fm=59

 

 

 

 

 

 

 

 

 

 

 


Step3:还你一颗真诚的心!

  

image

 

哈  ,原来内部也是有规律的  ,这个时候,是不是要递归一下呢?

大笑

   1:   private static int First(int num, int[,] dataArray,  int y,  int x, int number)
   2:   {
   3:       
   4:       int startX = x;
   5:       int startY = y;
   6:       #region 实现蜗牛的围墙
   7:              while (y < num - 1)
   8:              {
   9:                  dataArray[startX, y] = number;
  10:                  number++;
  11:                  y++;
  12:              }
  13:              while (x < num - 1)
  14:              {
  15:                  dataArray[x, y] = number;
  16:                  number++;
  17:                  x++;
  18:              }
  19:   
  20:              while (y > startX)
  21:              {
  22:   
  23:                  dataArray[x, y] = number;
  24:                  number++;
  25:                  y--;
  26:              }
  27:              while (x > y)
  28:              {
  29:                  dataArray[x, y] = number;
  30:                  number++;
  31:                  x--;
  32:              } 
  33:              #endregion
  34:       num -= 1;
  35:       startX++;
  36:       startY++;
  37:       if (num > 2)
  38:       {
  39:           return First(num, dataArray, startY, startX, number);
  40:       }
  41:       else
  42:       {
  43:           return 0;
  44:       }
  45:   }

image  哇塞,终于完成了!!!!!!!!!!!


 

images

 

 

如果,我输入的是一个奇数呢?

imageimage

 


 

521778350_186903492_DUDE_WTF_IS_WRONG_WITH_YOU_answer_8_xlarge_xlarge

此处只贴代码了

         if (num % 2 != 0)// 判断矩阵长度是否为奇数
            {
                dataArray[num / 2, num / 2] = num * num;
            }

咖啡杯所有源代码

转载于:https://www.cnblogs.com/minesky/p/3362575.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《2021测试面试题 - pdf》是一本面试题集合,以PDF格式呈现。这本书可能包含了各种不同类型的面试题,涵盖了不同领域和层级的职位。 阅读这本书可以提供一些关于面试准备的指导,帮助应聘者了解常见的面试问题,以及如何回答这些问题。它可以帮助应聘者熟悉面试过程,了解面试官的期望,并为他们的面试做好准备。 这本书可能包含常见的面试问题,例如个人背景介绍、职业发展规划、技术能力、解决问题的能力、团队合作等。通过阅读这些问题,应聘者可以思考如何回答,并准备一些典型的示例和故事来支持他们的回答。 这本书还可能提供一些面试技巧和建议,包括如何在面试中展示自己的能力和经验,如何有效地回答问题,如何展示个人的职业素养等。 总之,《2021测试面试题 - pdf》是一本面试题集合,旨在帮助应聘者准备面试,了解常见的面试问题,并提供一些面试技巧和建议。对于那些正在寻找工作或准备面试的人来说,这本书可能是一个有用的资源。 ### 回答2: 《2021测试面试题- pdf》是一本面试题集合,针对测试工程师岗位的招聘面试进行了整理和编写。这本题集包含了多种类型的测试题目,涵盖了软件测试的各个方面,旨在帮助招聘单位了解应聘者的测试知识和技能。 这本面试题集的内容包括但不限于测试基础知识、测试策略和方法、测试工具和框架、自动化测试、性能测试、安全测试等。这些题目有些是选择题,有些是简答题或编程题,都是经过精心设计的,可以帮助招聘单位全面地了解应聘者在测试领域的实际能力和经验。 对于应聘者而言,阅读和解答《2021测试面试题- pdf》可以帮助他们复习和巩固测试知识,并提前了解可能会在面试中遇到的问题和考察点。通过认真准备,应聘者可以在面试中更好地回答问题,展示自己的实际能力和经验,提高获得聘用的机会。 对于招聘单位而言,这本题集可以作为一个参考工具,用于筛选和评估应聘者。招聘单位可以根据《2021测试面试题- pdf》中的问题,结合自己的需求和要求,从中选取适合的问题进行面试,以衡量应聘者的能力和适应性。 综上所述,《2021测试面试题- pdf》是一本用于软件测试岗位招聘面试的题目集,旨在帮助招聘单位了解应聘者的测试知识和技能,同时也为应聘者提供了一个复习和准备面试的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值