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. android的单元测试

    1.新建android Test project 2. 选择针对测试的项目 3.新建类继承AndroidTestCase即可: package com.howlaa.sms.test; import ...

  2. Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)

    Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...

  3. Swift - 在界面上生成81个随机红,灰色圆点(SpriteKit游戏开发)

    下面是生成一个“围住神经猫”游戏的初始场景: 1,界面下方会生成9*9共81个圆点,同时圆点内部添加文本标签显示索引 2,默认圆点为灰色,每行随机取两个点变为红色 3,奇数行和偶数行有一定的错位,错位 ...

  4. 使用hadoop ecipse插件须要注意的问题

    1.关于run on hadoop的问题: 在未用hadoop eclipse插件前,我以为通过hadoop eclipse 插件不但能够管理hdfs,还能够自己主动打包程序.并帮我自己主动设置Con ...

  5. 网页 css

    css---- 层叠样式表(Cascading Style Sheet) 一,层叠样式表的分类 1,外部样式表:在外部定义样式表,然后在页面head里面附加该样式表 2,内嵌样式表:直接在网页head ...

  6. Problem K: Yikes -- Bikes!

    http://acm.upc.edu.cn/problem.php?id=2780 昨天做的题,没过……!!!伤心……题意:给你n个单位,n-1组关系,让你单位换算……解题思路:Floyd算法自己听别 ...

  7. 综述-如何克服HTML5的“性工能”障碍

    http://ask.dcloud.net.cn/docs HTML5自出现以来,几经风雨,虽看似很有前途,但实际使用问题太多,DCloud为此踩了无数坑.但我们从未放弃,我们加入了W3C,发起了 H ...

  8. Swift - 环形进度条(UIActivityIndicatorView)的用法

    Swift中,除了条形进度条外,还有环形进度条,效果图如下: 1,环形进度条的基本属性 (1)Style: Large White:比较大的白色环形进度条 White:白色环形进度条 Gray:灰色环 ...

  9. Swift编程语言学习3.1排列

    Swift 语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储同样类型的数据.字典尽管无序存储同样类型数据值可是须要由独有的标识符引用和寻址(就是键值对). Swift 语言里的数 ...

  10. php中include文件变量作用域的研究

    原文:php中include文件变量作用域的研究 在php中我们有时候需要include一个文件.比如我前段时间在写一个框架的时候,打算用原生的php作为模板,然后写一个display方法引入模板文件 ...