Young tableaus  这是 Introduction_to_algorithms一个 路学校运动, 我也难倒,互联网没有找到现有的应答。 今天 python 代码贴,供你参考。

#! /usr/bin/python



""" young tableau

   m x n matrix

"""

import sys



class element():

    def __init__(self, x, y):

        self.x = x

        self.y = y



def min_youngtableau(arry, p, m, n):

    minimum = element(p.x, p.y)

    if p.y < n and arry[p.x-1][p.y+1-1] < arry[p.x-1][p.y-1]:

        minimum.y = p.y + 1



    if p.x < m and arry[p.x+1-1][p.y-1] < arry[minimum.x-1][minimum.y-1]:

        minimum.x = p.x + 1

        minimum.y = p.y



    if minimum.x != p.x or minimum.y != p.y:

       temp = arry[p.x-1][p.y-1]

       arry[p.x-1][p.y-1] = arry[minimum.x-1][minimum.y-1]

       arry[minimum.x-1][minimum.y-1] = temp

       p = element(minimum.x, minimum.y)

       min_youngtableau(arry, p, m, n)



def extract_min(arry, m, n):

    temp = arry[1-1][1-1]

    arry[1-1][1-1] = 0xffff

    p = element(1,1)

    min_youngtableau(arry, p, m, n)

 

    return temp

    

def inseart(arry, v, m, n):

    if arry[m-1][n-1] != 0xffff:

        print "arrary is full"

        return



    arry[m-1][n-1] = v

    p = element(m, n)

    while p.x > 1 or p.y > 1:

        maxmum = element(p.x, p.y)

        if p.x > 1 and arry[p.x-1-1][p.y-1] > arry[p.x-1][p.y-1]:

            maxmum.x = p.x - 1



        if p.y > 1  and arry[p.x-1][p.y-1-1] > arry[maxmum.x-1][maxmum.y-1]:

            maxmum.x = p.x

            maxmum.y = p.y-1



        if maxmum.x == p.x and maxmum.y == p.y:

           break



        temp = arry[p.x-1][p.y-1]

        arry[p.x-1][p.y-1] = arry[maxmum.x-1][maxmum.y-1]

        arry[maxmum.x-1][maxmum.y-1] = temp

        p = element(maxmum.x, maxmum.y)

       

def build_youngtaleau(arry, m, n):

    arry2 = [

        [0xffff, 0xffff, 0xffff],

        [0xffff, 0xffff, 0xffff],

        [0xffff, 0xffff, 0xffff],

        [0xffff, 0xffff, 0xffff],

    ]

    for i in range(m):

        for j in range(n):

            if arry[i][j] != 0xffff:

                inseart(arry2, arry[i][j], m, n)



    return arry2



def youngtableau_sort(arry, m, n):



    arry = build_youngtaleau(arry, m, n)

    result = []

    for i in range(m):

        for j in range(n):

            result.append(extract_min(arry, m, n))



    print result



if __name__ == '__main__':

    arry = [

        [12, 45, 50],

        [34, 54, 13],

        [77, 88, 99],

        [87, 0xffff, 0xffff],

    ]



    youngtableau_sort(arry, 4, 3)

版权声明:本文博客原创文章。博客,未经同意,不得转载。

young tableaus的更多相关文章

  1. Lesson 17 Always young

    Text My aunt Jennifer is an actress. She must be at least thirty-five years old. In spit of this, sh ...

  2. 斯考特·杨(Scott Young)快速学习方法

    上午在网上看到了斯考特·杨(Scott Young)的快速学习方法,感觉很受鼓舞. 现在已经读研究生了,可是发现自己自从上大学以来到现在,发现自己的学习方法有很大的问题. 我是个特别喜欢读书的人,在大 ...

  3. Young氏矩阵

    一个 m x n 的Young氏矩阵是指,每一行数据都是从左到右排好序,每一列的数据也都是从上到下排好序.其中也可能存在一些INF的数据,表示不存在的元素,一个mxn的Young氏矩阵最多用来存放 r ...

  4. ural 1157. Young Tiler

    1157. Young Tiler Time limit: 1.0 secondMemory limit: 64 MB One young boy had many-many identical sq ...

  5. 算法导论 第六章 思考题6-3 Young氏矩阵

    这题利用二叉堆维持堆性质的办法来维持Young氏矩阵的性质,题目提示中写得很清楚,不过确实容易转不过弯来. a,b两问很简单.直接看c小问: 按照Young氏矩阵的性质,最小值肯定在左上角取得,问题在 ...

  6. 【杨氏矩阵+勾长公式】POJ 2279 Mr. Young's Picture Permutations

    Description Mr. Young wishes to take a picture of his class. The students will stand in rows with ea ...

  7. The Sorrows of Young Werther

    The Sorrows of Young Werther J.W. von Goethe Thomas Carlyle and R.D. Boylan Edited by Nathen Haskell ...

  8. Young Table(暴力,交换位置)

     Young Table Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submi ...

  9. 一次young gc耗时过长优化过程

    1    问题源起 上游系统通过公司rpc框架调用我们系统接口超时(默认超时时间为100ms)数量从50次/分突然上涨到2000次/分,在发生变化时间段里我们的系统也没有做过代码变更,但上游系统的调用 ...

随机推荐

  1. Scala中Stream的应用场景及事实上现原理

    欢迎訪问我的独立博客:http://cuipengfei.me/blog/2014/10/23/scala-stream-application-scenario-and-how-its-implem ...

  2. Android UI 学习 自定义的布局 平滑移动 VelocityTracker()

    /**  * Helper for tracking the velocity of touch events, for implementing  * flinging and other such ...

  3. 1352 - Colored Cubes (枚举方法)

    There are several colored cubes. All of them are of the same size but they may be colored differentl ...

  4. 基于visual Studio2013解决C语言竞赛题之1069链表查找删除

        题目 解决代码及点评 /* 功能:建立一个链表,每个结点包括:学号.姓名.性别.年龄.输入一个年龄,如果链表中的结点所包含的年龄等于此年龄, 将此结点删除,输出最后的链表. 时 ...

  5. JavaScript编程:文档对象模型DOM

    5.文档对象模型DOM JS里的DOM和XML里的DOM不同,但是解析方式是一样的. document.getElementByID("id")根据ID获得元素节点. 创建和操作节 ...

  6. 使用JDBC处理数据库大容量数据类型

    在本文将介绍如何使用JDBC操作MySQL数据库对于大容量数据类型的读取.在之前的博客中已经介绍了如何使用JDBC来操作数据库对各种数据的增删改查,那么大容量数据类型的数据操作又为何不同呢. 原因在于 ...

  7. 大数据实时处理-基于Spark的大数据实时处理及应用技术培训

    随着互联网.移动互联网和物联网的发展,我们已经切实地迎来了一个大数据 的时代.大数据是指无法在一定时间内用常规软件工具对其内容进行抓取.管理和处理的数据集合,对大数据的分析已经成为一个非常重要且紧迫的 ...

  8. Android事件详解——拖放事件DragEvent

    1.Android拖放框架的作用? 利用Android的拖放框架,可以让用户用拖放手势把一个View中的数据移到当前layout内的另一个View中去. 2.拖放框架的内容? 1)拖放事件类 2)拖放 ...

  9. Spring中的FactoryBean

    从SessionFactory说起: 在使用SSH集成开发的时候,我们有时候会在applicationContext.xml中配置Hibernate的信息,以下是配置SessionFactory的一段 ...

  10. D7升级时候发现许多System函数和网络函数只有Byte版本的,需要注意

    SetLength 对于字符串,是WideChar的长度GetMem 只针对ByteMove 只针对ByteFillChar 只针对ByteWriteFile(API) 只针对Byte SetSock ...