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次/分,在发生变化时间段里我们的系统也没有做过代码变更,但上游系统的调用 ...
随机推荐
- Java面试题精选(二)线程编程、数据库理论和Jdbc部分
—— 线程编程.数据库理论和Jdbc部分内容 —— 数据库的开发应用想必是我们日常所碰到最多的知识点了,大致可分为:oracle.MySQL.SQL Server.Hadoop. NoSQL. ...
- 将Qt 动态链接生成的exe及依赖dll打包方法
源地址:http://blog.csdn.net/ztz0223/article/details/8939341 将Qt 动态链接生成的exe及依赖dll打包方法 原文:http://www.qtcn ...
- UVA 10201 Adventures in Moving - Part IV(dp)
Problem A: Adventures in Moving - Part IV To help you move from Waterloo to the big city, you are co ...
- javaEE开发之导出excel工具类
web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import ...
- Re-installation failed due to different application signatures.
出现此问题是由于apk的签名不同所致(假设不知道签名是什么 请看上一篇Android应用程序签名 debug签名).假设你是使用的自己的签名,那就是你新版本号的apk使用的签名文件与上一版本号(也就 ...
- 简易的sniffer程序
真的非常简易,这个程序不过抓一些发送到本机的数据包,然后显示出来它们的一些信息罢了. 程序很easy! #include <WinSock2.h> #include ...
- 进阶:案例三: Upload File using WebDynpro
1.节点创建,其中DATASOURCE存放uploadfile名称 2.layout布局 3.upload事件代码: method ONACTIONUPLOAD . DATA: lo_Node typ ...
- ScaleAnimation类:尺寸变化动画类
9.4 ScaleAnimation类:尺寸变化动画类 ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类.Scal ...
- BDIA增强
SE24 CL_EXITHANDLER的方法GET_INSTANCE中有基本上所有的增强都会走这边,打上断点查找增强名称,或者在程序中全局搜索GET_INSTANCE关键字 然后 SE19 下 ...
- javascript创建类的6种方式
javascript创建类的7种方式 一 使用字面量创建 1.1 示例 var obj={}; 1.2 使用场景 比较适用于临时构建一个对象,且不关注该对象的类型,只用于临时封装一次数据,且不适合代码 ...