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次/分,在发生变化时间段里我们的系统也没有做过代码变更,但上游系统的调用 ...
随机推荐
- CodeForces 462B Appleman and Card Game(贪心)
题目链接:http://codeforces.com/problemset/problem/462/B Appleman has n cards. Each card has an uppercase ...
- asp.net2.0安全性(2)--用户个性化设置(1)--转载来自车老师
在Membership表中可以存储一些用户的基本信息,但有的时候,我们需要记录的用户信息远远不止Membership表中提供的这些,如QQ.MSN.家庭住址.联系电话等等.那如何把这些用户信息记录到数 ...
- linux命令:使用man, 导出man
要查一个命令怎么使用,使用"man 命令", eg: man find, man ls; "info 命令"貌似也可以看, info find, info ls ...
- MYSQL 命令行导入导出
1.导出mysql数据库 mysqldump -h[服务器地址本机可以忽略] -u[用户] -p[密码] -P[myql数据库端口]>导出文件位置 mysqldump -h192. -uroot ...
- 基于visual Studio2013解决C语言竞赛题之1051数的顺序
题目 解决代码及点评 /* 功能:自然数N一般写成如下形式: N=d[k]d[k-1]d[1] (d[1]-d[k] 均是十进制数字) 如果d[i+1]>d[i] (i=k-1 ...
- AFNetwork学习(二)——GET/POST请求
为了学习AFNetwork,自己搭建整理了一下AFNetwork向后台发送请求和后台返回json数据的整个处理过程.利用Struts2搭建了一个后台,提供Action并返回json数据 环境:Xcod ...
- boost.asio系列——io_service
IO模型 io_service对象是asio框架中的调度器,所有异步io事件都是通过它来分发处理的(io对象的构造函数中都需要传入一个io_service对象). asio::io_service i ...
- Linux教程:如何在Linux下进行C++开发?
Linux是一类Unix计算机操作系统的统称,Linux操作系统的内核的名字也是“Linux”, 在Linux下进行C++开发,需要注意许多问题,比如:减少不必要的编辑动作,减少编辑的时间. Wind ...
- android图片压缩的3种方法实例
android 图片压缩方法: 第一:质量压缩法: private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = ...
- zoj 1107 FatMouse and Cheese(记忆化搜索)
题目链接:点击链接 题目大意:老鼠从(0,0)出发,每次在同一个方向上最多前进k步,且每次到达的位置上的数字都要比上一个位置上的数字大,求老鼠经过的位置上的数字的和的最大值 #include<s ...