`
oboaix
  • 浏览: 273834 次
社区版块
存档分类
最新评论

也来一例内螺旋数组python实现

 
阅读更多

 熟悉python,也整一个类似java实现的,功能基本一样,练练手,酷

也可以参考另外一篇java的实现文章,

内螺旋数组java实现

源码如下:

 

#-*-coding:UTF-8-*-
#!/usr/bin/python
##array define
##dennis zhao 27202787@qq.com
##2013-08-02
 
import time,sys

result = [[] for i in range(5)]
initial = [[] for i in range(5)]
directions = [[] for i in range(5)]
print ("="*60);

for k in range(0,5):
    for j in range(1,6):
        result[k].append(0);

for k in range(0,5):
    for j in range(1,6):
        initial[k].append(0);

for k in range(0,5):
    for j in range(1,6):
        directions[k].append('-');


def showData(ll,dirs):
    ret="";
    for i in range(len(ll)):
        s=str(ll[i]);
        ret=ret + s.zfill(2)+ dirs[i] +"\t";
    return ret;

#print ("result",result)
#print ("initial",initial)
#print ("directions",directions)   
count=0
row = 0;
col = -1;

while (count < 5*5):
    #left to right
    col +=1;
    while(col<5 and initial[row][col] == 0):
        initial[row][col]=1;
        count+=1;
        result[row][col] = count;
        directions[row][col] = "→";
        col+=1;
    #print ("first", result);
    #time.sleep(1);
    col-=1;#last column minus 1

    row+=1;#top to down
    while (row < 5 and initial[row][col] == 0):
        initial[row][col] = 1;
        #global count;
        count+=1;
        result[row][col] = count;
        directions[row][col] = "↓";
        row+=1;
    row-=1;#last row minus 1
    #print ("second", count);
    #time.sleep(1);
    col-=1;#right to left
    
    while (col >= 0 and initial[row][col] == 0):
        initial[row][col] = 1;

        count+=1;
        result[row][col] = count;
        directions[row][col] = "←";
        col-=1;
    col+=1;# last column add 1
    #print ("third", count);
    #time.sleep(1);

    # down to top
    row-=1;
    while (row >= 0 and initial[row][col] == 0) :
        initial[row][col] = 1;
        count+=1;
        result[row][col] = count;
        directions[row][col] = "↑";
        row-=1;
    row+=1;# last row add 1
    #print ("fourth", count);
    #time.sleep(1);




for index in range(len(result)):
   print ('Line value (',index+1,'):\t', showData(result[index],directions[index]))


#print ("result",result)
#print ("initial",initial)
#print ("directions",directions)  
print ("="*60);

 

 效果图:



 

  • 大小: 24.6 KB
分享到:
评论

相关推荐

    java螺旋数组代码

    此外,还包括一个`printRatateArray`方法用于实现螺旋数组的填充和打印功能。 ```java public class RotateArray { public static void main(String[] args) { System.out.println("打印结果:"); RotateArray ...

    利用for循环实现螺旋数组

    利用四个for循环实现逆时针和顺时针的螺旋数组

    用 C 编的螺旋数组

    螺旋数组,又称螺旋矩阵,是一种特殊的二维数组布局方式,它按照顺时针或逆时针方向从外向内填充数字。在C语言中实现螺旋数组,我们需要理解数组的基本操作、循环控制以及条件判断。下面我们将深入探讨这个话题。 ...

    C++螺旋数组

    螺旋数组,也称为螺旋矩阵,是一种特殊的二维数组排列方式,其特点是元素按照顺时针或逆时针方向从外向内填充。在C++编程中,实现螺旋数组的填充和打印是一项常见的数据结构与算法练习。这个主题通常涉及到数组操作...

    螺旋数组的java实现----------------------------------------

    螺旋数组的java实现-----------------------------------------------------------------------------------------------------------

    C++语言写的螺旋数组

    总的来说,理解和实现螺旋数组不仅能够提升对二维数组操作的理解,也是对逻辑思维和控制结构掌握的一个很好练习。在实际编程中,这种技巧可能会在处理图像数据、游戏编程或者某些特定算法中派上用场。

    C语言实现的螺旋数组,面试必备

    本文将详细介绍如何使用C语言实现一个螺旋数组,并通过示例代码来解析其实现过程。螺旋数组是指一个正方形矩阵中的元素按照螺旋顺序填充的过程,通常从左上角开始,顺时针方向依次填充。 #### 知识点详解 ##### 1....

    C经典算法源程序\数组之螺旋数组

    #include"stdio.h" #include"iostream.h" int array[11][11]; int temp; int ROW; void godown(int &m,int &a) { for(temp=1;temp;temp++) if(array[temp][a]==0) array[temp][a]=m++;...} }

    解决输出顺时针螺旋数组问题【寻路算法】

    同时,我们需要一个布尔数组或HashSet来跟踪已访问过的元素,避免重复访问。 下面是一个基本的C#代码实现示例: ```csharp public static int[,] SpiralMatrix(int rows, int cols) { int[,] matrix = new int...

    矩形螺旋数组的c#实现

    昨天去面试 公司出了一题螺旋数组 输入 5 输出 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 当场让我编写,当时比较紧张 没有写出来,回来想了想 其实也不难,附上代码实现,希望能帮到...

    打印螺旋数组(新手编的)

    大家都来下下..改进改进 我没积分了...我要下东西.... 大家都支持支持...

    螺旋数组 java下载

    java螺旋数组有关Java面向对象编程指南 Java面向对象编程指南

    vc6.0螺旋数组

    用vc++6.0编写实现螺旋数组,并经过调试之后可以使用,欢迎大家的下载。

    C语言解决螺旋数组问题

    螺旋数组问题,相信很多人都做过了,初学者可以看一下,应该会有用处的。

    螺旋输出二维数组

    螺旋输出二维数组是一种在编程中处理二维数组时常见的操作,特别是在数据展示或处理特定顺序时。这个算法的主要目的是按照顺时针或者逆时针的方向依次访问数组中的元素,形成一个螺旋状的输出。 在给定的代码中,...

    C++递归实现螺旋数组的实例代码

    总的来说,C++递归实现螺旋数组的关键在于理解螺旋填充的逻辑,并通过递归调用来处理每一层的填充。这种方法不仅适用于创建新的螺旋数组,也可以用于读取已有的螺旋数组中的特定元素。通过这种方式,我们可以灵活地...

    彩色螺旋图形python源代码

    彩色螺旋图形python源代码

    二维数组螺旋遍历.zip

    此外,该问题也可以扩展到多维数组的螺旋遍历,或者实现反向(逆时针)螺旋遍历,以增加难度和灵活性。 总之,二维数组螺旋遍历是一个有趣且实用的编程挑战,它要求我们巧妙地管理和调整边界,以达到螺旋遍历的效果...

    螺旋的方式打印二维数组

    以下是一个简单的Python实现螺旋打印的例子: ```python def spiralPrint(matrix): if not matrix: return n = len(matrix) left, right, top, bottom = 0, n - 1, 0, n - 1 while left for i in range(left...

Global site tag (gtag.js) - Google Analytics