Archive for May, 2009

May 10, 2009

问题描述:

所谓子序列,就是在原序列里删掉若干个元素后剩下的序列,以字符串”abcdefg”为例子,去掉bde得到子序列”acfg”
现在的问题是,给你一个数字序列,你要求出它最长的单调递增子序列。

输入:

多组测试数据,每组测试数据第一行是n(1<=n<=10000),下一行是n个比1e9小的非负整数

输出:

对于每组测试数据输出一行,每行内容是最长的单调递增子序列的长度

样例输入:

5
1 2 4 8 16
5
1 10 4 9 7
9
0 0 0 1 1 1 5 5 5

样例输出:

5
3
3

Tags: . 53 views

题目描述:

给你一个数字,你要判断它是不是回文数字。例如134431或者242这种左右对称的数就叫做回文数。现在你需要编写一个Rev函数,其声明为int Rev(int n);
你需要判断输入的n是不是回文数字,如果是,请返回1,否则请返回0

样例输入:

123
12321

样例输出:

0
1

Tags: . 88 views
May 7, 2009

题目:

有两个圆,大圆半径是小圆半径的3倍。请问,小圆贴着(外贴)大圆的边,绕大圆滚完一圈,小圆转了几圈?

如果是内贴的话答案又是多少?

分析:

我对这个问题的理解:

有两种解释,这取决于小圆转几圈的参考依据时什么:以大圆圆心为参考,小圆圆周上的某点有几次和大圆接触;以小圆圆心为参考,其圆周上某点绕圆心转了几圈。按照第一种理解,无论两圆内切还是外切,小圆都是转了三圈。但是对于本题,我更倾向于第二种理解。

首先应该有一个基本的认识:当圆沿着某个界面无滑动滚动,圆心运动的路程和圆周上某点相对圆心的运动路程相等。证明时很简单的。有了这个前提,这个问题就简单明了了,以下从略。

Tags: . 68 views
May 6, 2009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
;#################################################################
;              这是一个键盘扫描程序 
;将得到的健值(01H-10H)在右边两位数码管显示 (data= XX) 
;程序采用中断结构,硬件连接上将INT_KEY信号与P3.2(INT0) 连接;
;普通的I2C通讯程序可以直接利用,为读数据子程序需要加延时
;这是ZLG7290芯片在读数据时有延时,在RDBYT中添加一个20US延时
;#################################################################
SDA		BIT	P1.0
SCL		BIT	P1.1  
WSLA		EQU	070H
RSLA		EQU	071H
DISDA		EQU	20H		;源数据块首地址
DISCON		EQU	08H		;写入数据个数		
DATA_1		EQU	30H		;变量区首地址
;********************************************************
	ORG	8000H 
	LJMP	8100H  
;********************************************************
Tags: ,. 77 views
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
	dat 	bit p3.2	;定义端口号
	clk	bit p3.3	
	cs	bit p3.4
 
	org	8000h		;程序定位及跳转指令的设置
	ljmp	8100h
	org	8100h
 
start:
	mov	sp, #60h	;定义堆栈底位置
stable:
	mov	r3, #00h	;循环体执行次数:256
	mov	r6, #00h	;寄存器清零
	mov	r7, #00h	;寄存器清零
loop:
				;取平均值主要是为了减小
				;高速模数转换干扰产生的误差
	lcall	tlc549_adc	;调用模数转换子程序
	add	a, r6		;向R7-R6累加a的值256次
	mov	r6, a
	mov 	a, #00h
	addc	a, r7
	mov	r7, a	
	lcall	delay
	djnz	r3, loop
	mov	a, r7		;将R7中的平均值送到a
	cpl	a		;a取反
	mov	p1, a		;输出a的值
	sjmp	stable
 
tlc549_adc:			;模数转换的驱动子程序
	push	07h
	clr	a		;清零
	clr	clk		;清零
	mov	r7, #08h	;由于是串行输入,每字节需要8次读入
	clr	cs		;片选信号置低位,选中模数转换器
loop1:
	setb	clk		;开始读取数据
	mov	c, dat
	rlc	a		;诸位读取,送到a
	clr	clk
	djnz	r7, loop1
	setb	cs
	setb	clk
	pop	07h
ret
 
delay:				;微小的延时,用来同步和协调单片机
				;与模数转换器的工作步调
	push	00h
	mov	r0, #00h
	djnz	r0, $
	pop	00h
ret
 
 
end
Tags: ,. 56 views

介绍
MMS协议是Windows Media Player用的一个协议,在网上应用的比较多。MiMMS,意思是”MiMMS isn’t an MMS Sender”,是一个MMS流下载程序。
安装
如果你使用Debian、Ubuntu等发行版,可以直接在源中获取这一软件。

#apt-get install mimms

果你使用其它发行版,可以在相应的源中寻找,也可以到MiMMS的主页 http://savannah.nongnu.org/projects/mimms/ 去下载源码,自己编译。
使用
使用MiMMS也很简单:

# mimms mms://你的视频路径
Tags: . 104 views
May 5, 2009

移动

首先当然是j,k,h,l,下上左右移动一行/列. 结合数字刻实现多行/列移动, 如11j.
fc, c为某个字母, 实现行内向后定位到c. 对应的,Fc为向前定位. 然后用;继续移动.
0,移动到行首; $移动到行尾,I定位到行首并进入编辑模式; A定位到行尾并进入编辑模式.
结合起来, 0fc, 先移动到行首, 再定位到c.
G移动到文件末尾;gg移动到首行;M移动屏幕中间。

编辑

查找并替换:%s/search/pattern/ 当前行替换search为pattern;若全局则用%s/search/patten/g. 例如删除空行可以用%s/\n$//g. ?或/简单的查找
dd, 删除当前行;dj删除下一行;3d删除当前在内的一下三行(相应的y为复制);dfc当前行内删除到首个字母c处;x删除当前字母;r替换当前字母。
u取消上一步; Ctrl+r重做上次取消的操作。

外部命令

:!make编译

Tags: ,. 44 views
May 1, 2009

算法:

1
2
3
4
5
for i = 2:n,
    for (k = i; k > 1 and a[k] < a[k-1]; k--) 
        swap a[k,k-1]
    → invariant: a[1..i] is sorted
end

算法性质:

  • 稳定
  • 需要O(1)的额外空间开销
  • 需要O(n2)复杂度的比较和交换。
  • 具有自适应性:当待排序序列接近有序时,复杂度为O(n)。
  • 开销较低

讨论:

虽然在最坏情况下,插入法排序的复杂度为O(n2),但当序列已经接近有序(算法具有自适应性)或者问题规模比较小(空间开销很小)时,插入法排序还是一种比较好的选择。所以,插入法排序,通常可以作为其他诸如归并排序、快速排序等递归递归排序的基础。

Tags: ,. 117 views
Page 4 of 41234