飞纯技术
  • 主页
  • 相册
  • 关于我
KEEP IN TOUCH

Posts tagged 计算机科学

Missing Number – New version

九12
2007
Leave a Comment Written by Filia.Tao

今天开始做题,第一个题目, Missing Number – New version .
发现我竟然在很短的时间内就想到了思路. 题目摘录如下:

An array A[1...n] contains all the integers from 0 to n except one. In this problem, we cannot access an entire integer in A with a single operation. The elements of A are represented in binary, and the only operation we can use to access them is “fetch the jth bit of A[i ]“, which takes constant time. Find the missing integer in O(n) time.

翻译成中文就是, 数组A[1..n] 包含 0-n 中的n-1个数, 只有一个不在里面. 数字以二进制存储,一次只能访问一位. (常数时间) . 现在要求在O(n)时间内找到不在其中的那个数.

下面是答案, 不想看答案的可以停止阅了.
————————————————

首先, 我们假设n =2k . (假设的合理性, 下面讨论) , 用k 位二进制数来表示一个数.
很显然所有数中i-th 位 会有n/2 个1 ,n/2 个 0.

init array T with 1..n
m = n-1
for i =1 to k
    for j = 1 to m
        B  =  []
        C  =  []
        if i-th-bit(A[j]) == 1
           Add j to B
        else
           Add j to C
    if size(B) < size(C)
         T = B
    else
         T = C
    m = floor(m/2)

Now T should only have one element k,
toogle last bit of A[k] is the missing number .

算法分析:
复杂度为 : n + n/2 + n/4 + n/8 + ……… + 2 + 1 < 2n = O(n)
不过使用了一些多余的存储空间.
另:n =2k假设的合理性.
if 2k-1 < n < 2k , 我们完全可以不管第一位, 因为它必定为1. (使用K位编码)
所以 T(n) = T(2k-1)

Posted in 算法 - Tagged 算法

Mix计算机基本知识

三04
2007
Leave a Comment Written by Filia.Tao

1.mix 字
一个字节至少表达64个不同的值
一个计算机字是5个字加一位符号位
2.MIX的寄存器组织

3.字的部分场
场(L:R)在计算机中以8L+R的值的存入一个字节
4.指令格式
0 1 2 3 4 5
± A A I F C
C 操作码
F 对操作码的说明,通常是一个场说明(L:R)=8L+R
±AA 为地址
I 变址说明 0 不变,1-6 采用I1-I6寄存器中的值与±AA相加,其结果作为指令的地址
5.记法
操作符 地址,I(F)
6.指令的具体说明
M为变址后的地址,CONTENTS(M)为对应地址的存储单元的内容

C F 说明
LDA 8 场 CONTETNS(M)所说明的场代替寄存器A的内容
LDX 15 场 CONTETNS(M)所说明的场代替寄存器X的内容
LDi 8+i 场 CONTETNS(M)所说明的场代替寄存器X的内容
如果指令导致置1,2,3字节为非0,则改指令未定义
LDAN 16 场 跟上面的指令含义相同,不过把相反的符号装入
LDXN 23 场
LDiN 16+i 场
STA 24 场
STX 31 场 rX的内容代替CONTENTS(M)所说明的场。除非符号是场的一部分,否则符号不变
STi 24+i 场 rIi的内容代替CONTENTS(M)所说明的场。除非符号是场的一部分,否则符号不变
STJ 32 场 rJ的内容代替CONTENTS(M)所说明的场。除非符号是场的一部分,否则符号不变
STZ 33 场 CONTENTS(M)所说明的场变为0。如果符号是场的一部分,置+。

用V表示CONTENTS(M)所说明的场

ADD 1 场 V加到rA
如溢出,溢出开关接通。如0,符号不变(下同)
SUB 2 场 rA减去V,
MUL 3 场 V乘rA的10字节的乘积放在A和X中。rA,rX的符号变为结果的符号。
DIV 4 场 rA,rX的值看成10字节的数,符号看rA.除以V。商放rA.余数放rX,rX符号看rA原来的符号。

ENTA/ENNA 48 2/3 数量M/-M装入rA
ENTX 55 2/3 数量M/-M装入rX
ENTi/ENNi 48+i 2/3 数量M/-M装入rIi
INCA/DECA 48 0/1 数量M加到rA/rA减去数量M
INCX/DECX 55 0/1 数量M加到rX/rX减去数量M
INCi/DECi 48+i 0/1 数量M加到rIi/rIi减去数量M

CMPA 56 场 A指定的场与CONTENTS(M)同样的场比较
CMPX/CMPi 63/56+i 场 含义类似

JMP 39 0 无条件转移,下一条指令从单元M中取出。
JSP 39 1 同上,但rJ内容不变
JOV 39 2
JNOV 39 3
还有很多转移操作不再列出

MOVE 7 个数 从单元M开始,按F所指定的个数的那些字,移动到rI1所指定的单元起的一片单元,结束后rI1加上F的值
SLA/SRA 6 0/1 M说明左移,右移的字节数。
A左移/A右移
SLAX/SRAX 6 2/3 AX左移/AX右移
SLC/SRC 6 4/5 AX循环左移/AX循环右移
NOP 0 空操作
HLT 5 2 停机

[tag]Mix[/tag],[tag]Computer[/tag],[tag]汇编[/tag],[tag]指令[/tag]

Tagged Computer, Mix, 指令, 汇编

授权方式

Creative Commons License
本站作品采用
知识共享署名-非商业性使用-相同方式共享 3.0 许可协议
进行许可。

最近评论

  • carlos 发表在《yacc,ast and graphviz》
  • xiang 发表在《关于我》
  • healthy green tea 发表在《debian 同步系统时间》
  • Filia.Tao 发表在《Kinper – A Kindle Helper Service》
  • pensz 发表在《厦门行简单记录》

My Tweets

RSS My KnowHowSpot

标签

指令 汇编 算法 计算机科学 2008 amazon android ast boto C++ C/C++ compiler Computer design-pattern DFA Django ezengage Firefox github google GSoc http imagedownload iterator javascript jquery kindle kinper lex life Linux locationbar Mix opensource proxy python s3 S5Creator shanghai slide STL vector vista web Web开发

分类

  • ideas (2)
  • job (2)
  • life (2)
  • notes (1)
  • opensource (38)
    • Firefox (17)
    • GSoc (7)
    • Linux (13)
  • project (3)
  • 生活 (3)
  • 编程开发 (67)
    • C/C++ (4)
    • GAE (1)
    • http (2)
    • javascript (24)
    • python (20)
    • Web开发 (12)
    • 端口映射工具的实现 (6)
  • 计算机科学 (23)
    • compiler (17)
      • lex (11)
    • 算法 (5)
  • 随便写写 (67)

文章归档

Blogroll

  • 11′s SKY
  • 86's world
  • Filia’s Summer Of Code
  • limodou的学习记录
  • Loki
  • MyAllBlue
  • perol’s blog
  • Realazy
  • 一个藏袍
  • 人猿星球
  • 冰古Blog
  • 刀枪Blue
  • 懶懶喵日記
  • 桑林志
  • 白菜
  • 车东[Blog^2]
  • 释翼的天空
  • 阿文的自留地

开源网站

  • beagle
  • linuxsir
  • sourceforge
  • 中国Linux 公社
  • 啄木鸟社区

我的项目

  • ezEngage
  • KnowHowSpot

EvoLve theme by Theme4Press  •  Powered by WordPress 飞纯技术