日期:2014-05-17  浏览次数:20467 次

一道面试题
将1-100放入10X10的二维数组当中,放置规则如下:

面试官说如果这种题40秒钟之内没有想法,就不要做开发了。在cocoachina上已经发过了。

------解决方案--------------------
google 螺旋矩阵
------解决方案--------------------
40秒没完全搞清楚的飘过!
------解决方案--------------------
票过, 没有!
------解决方案--------------------
我看了一下时间,我用了3分钟
看来我做不了开发了
——————
头一次看见这东西,说我的思路,有时间在写全
这个东西炸一看挺晕,仔细想就是算坐标
起始位置是(0.0)终止是(99.99),从左上到右下
现在用变量代替x,y需要一个变量i表示行 
循环x.x到x=i到y=i-1
嵌入循环x=x-1-i, y=y-1-i
同比循环x=x-1-i,y=i
逆循环,x=i+1,y=i+1
------解决方案--------------------
慢慢旋进去,就跟版主说的
------解决方案--------------------
自己写了一个,发现代码有点傻,还是不要发出来
------解决方案--------------------
能向右走就向右走,不能向右走就向下走,不能向下走就向左走,不能向左走就向上走,不能向上走就向右走
------解决方案--------------------
40秒内能够有想法,这应该是大多数合格的程序员都能做到。

能够有想法,跟测试程序完全正确而结束,是两个概念。也许你需要1小时才能提交你的代码,但是一开始这个想法并不需要20秒钟。

这里是一个“很傻的”写法,但是这个想法应该不需要20秒钟就能想出来了。
using System;

namespace ConsoleApplication1
{
    static class Program
    {
        static void Main(string[] args)
        {
            var array = new int[10, 10];
            开始填数(array, 0, 0, 1, Direction.向右);
            for (var i = 0; i <= array.GetUpperBound(0); i++)
            {
                for (var j = 0; j <= array.GetUpperBound(1); j++)