young tableaus
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的更多相关文章
- 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 ...
- 斯考特·杨(Scott Young)快速学习方法
上午在网上看到了斯考特·杨(Scott Young)的快速学习方法,感觉很受鼓舞. 现在已经读研究生了,可是发现自己自从上大学以来到现在,发现自己的学习方法有很大的问题. 我是个特别喜欢读书的人,在大 ...
- Young氏矩阵
一个 m x n 的Young氏矩阵是指,每一行数据都是从左到右排好序,每一列的数据也都是从上到下排好序.其中也可能存在一些INF的数据,表示不存在的元素,一个mxn的Young氏矩阵最多用来存放 r ...
- ural 1157. Young Tiler
1157. Young Tiler Time limit: 1.0 secondMemory limit: 64 MB One young boy had many-many identical sq ...
- 算法导论 第六章 思考题6-3 Young氏矩阵
这题利用二叉堆维持堆性质的办法来维持Young氏矩阵的性质,题目提示中写得很清楚,不过确实容易转不过弯来. a,b两问很简单.直接看c小问: 按照Young氏矩阵的性质,最小值肯定在左上角取得,问题在 ...
- 【杨氏矩阵+勾长公式】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 ...
- The Sorrows of Young Werther
The Sorrows of Young Werther J.W. von Goethe Thomas Carlyle and R.D. Boylan Edited by Nathen Haskell ...
- Young Table(暴力,交换位置)
Young Table Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submi ...
- 一次young gc耗时过长优化过程
1 问题源起 上游系统通过公司rpc框架调用我们系统接口超时(默认超时时间为100ms)数量从50次/分突然上涨到2000次/分,在发生变化时间段里我们的系统也没有做过代码变更,但上游系统的调用 ...
随机推荐
- 中转server
中转传输概要设计 中转传输的消息架构为模拟MFC的消息架构,请參考我的上一篇文章. 1. 概述 中转server採用事件驱动的方式,与socket结合.其层次例如以下: 在事件驱动层中,将相关消息发送 ...
- HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
HTML5 Canvas自定义圆角矩形与虚线(RoundedRectangle and Dash Line) 实现向HTML Canvas 2d context绘制对象中添加自定义的函数功能演示,如何 ...
- Windows Azure入门教学系列 (八):使用Windows Azure Drive
我们知道,由于云端的特殊性,通常情况下,对文件系统的读写建议使用Blob Storage来代替.这就产生了一个问题:对于一个已经写好的本地应用程序,其中使用了NTFS API对本地文件系统读写的代码是 ...
- 基于visual Studio2013解决面试题之0701寻找丑数
题目
- asp.net微软认证全新考试题库及答案1
1.你创建了一个ASP.net应用程序,该程序将运行在TK公司的WEB站点上.你的应用程序包括100个WEB页面.你想配置你的应用程序,当HTTP代码发生错误时,可显示自定义的错误信息给用户.同时你想 ...
- 快速排序原理、复杂度分析及C语言实现
本文作者华科小涛:@http://www.cnblogs.com/hust-ghtao/,参考<算法导论>,代码借用<剑指offer> 快速排序是一种最坏情况时间复杂度为的排序 ...
- 【测试】这是用微软word发布的博客
参考文章: http://blog.163.com/dsp163@126/blog/static/795585732011573383290/ 试试图片, 美女镇楼:
- Android高手进阶——Adapter深入理解与优化
Android高手进阶--Adapter深入理解与优化 通常是针对包括多个元素的View,如ListView,GridView.ExpandableListview,的时候我们是给其设置一个Adapt ...
- Codeforces Round #218 (Div. 2) (线段树区间处理)
A,B大水题,不过B题逗比了题意没理解清楚,讲的太不清楚了感觉= =还是英语弱,白白错了两发. C: 二分答案判断是否可行,也逗比了下...二分的上界开太大导致爆long long了... D: ...
- 旧版QT的名称:qt-win-commercial-4.4.3-vc60.exe
qt-win-commercial-4.4.3-vc60.exeqt-vsaddin-collection-2.1.4.exeqt-win-commercial-4.4.3-v2005.exeqt-v ...