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. 经典排序算法 - 基数排序Radix sort

    经典排序算法 - 基数排序Radix sort 原理类似桶排序,这里总是须要10个桶,多次使用 首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,临时忽视十位数 比如 待排序数组[ ...

  2. ASM丢失disk header导致ORA-15032、ORA-15040、ORA-15042 Diskgroup无法mount

    SQL> select * from v$version; BANNER --------------------------– Oracle Database 11g Enterprise E ...

  3. 【剑指offer】树的子结构

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25907685 剑指offer第18题,九度OJ上測试通过! 题目描写叙述: 输入两颗二叉树 ...

  4. eclipse插件maven的使用,web打包成WAR,tomcat下直接运行

    1.首先下载maven  其下载地址为:http://maven.apache.org/download.html   下载apache-maven-3.0.3-bin.zip 环境变量配置为  变量 ...

  5. Windows phone 8 学习笔记

    Windows phone 8 学习笔记(1) 触控输入  http://www.apkbus.com/android-138547-1-1.html Windows phone 8 学习笔记(2) ...

  6. 9、Cocos2dx 3.0游戏开发三查找值小工厂方法模式和对象

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27704153 工厂方法模式 工厂方法是程序设计中一个 ...

  7. 大数据时代的精准数据挖掘——使用R语言

    老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...

  8. python 调用shell命令三种方法

    #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将pyth ...

  9. uva 129

    暴力求解 大致题意 如果一个字符串含有相邻的重复字串称为容易的串,反之为非容易 求字典序第n困难的串…… 大致思路,暴力如果是容易的串停过,然后困难的串继续求解tot++ 总之先记着吧…… 最后输出格 ...

  10. Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET

    OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...