Crane
Table_bottom

Search
Loading
Table_bottom

分类
Table_bottom

随机文章
Table_bottom

标签云
Table_bottom

最新评论
Table_bottom

链接
Table_bottom

功能
Table_bottom

求三个参数中最大两个的平方和

看到一题,实现一个函数,求三个函数中最大的两个参数的平方和。

很自然的,想到这样的方法:

int sum_square_largest(int x, int y, int z){

    if(y > x && z > x){
        return y * y + z * z;
    }

    if(x > y && z > y){
        return x * x + z * z;
    }

    if(x > z && y > z){
        return x * x + y * y;
    }
}
但是可以看到中间的判断都是相似的,由此可就得一更简洁的方法,使用递归。
int sum_square_largest(int x, int y, int z){

    if (x <= y && x <= z){
        return y * y + z * z;
    }

    return sum_square_largest(y, z, x);
}
由于这里是尾递归,gcc优化会识别出这个,然后自动调整堆栈,不会出现函数开销在堆栈上花费很多时间资源的情况。

 
 

 

 

 

 

强大的VimIM

什么是VimIM呢,全名就是Vim Input Method,即Vim下的输入法,也许你已经习惯了Vim的插件能提供很多难以想像的功能,但却从来没有想到可以提供一个输入法,但是你不用怀疑,这是真的,并且这是一个强大的插件,只要你的Vim能显示中文,那么使用这个输入法就没有任何问题。

号外:要是vim不能显示中文怎么办呢,提供一个方法,重新编译vim,加上--multi_byte --iconv选项就行了,当然这个前提是你的系统支持中文,系统中文没有配好请参阅相关发行版的wiki。要是系统能显示,请加入下列行到vim配置文件($HOME/.vimrc)

set enc=utf-8
set tenc=utf-8
set fenc=utf-8
set fencs=utf-8,usc-bom

这个插件继承了Unix的哲学,Keep it simple。使用非常简单,只要把两个文本文件拷到插件目录下就可用了(一般是$HOME/.vim/plugin),这就安装好了,就是一个vim的script,天生跨平台(Windows, Mac, Linux),一个词库文件,词库文件就是自己的输入法(拼音,五笔,四角,音形,DIY),所以只要有vim的地方都能用,两个文本文件构成了一个输入法,简单又强大。

输入法主脚本下载:http://vim.sourceforge.net/scripts/script.php?script_id=2506

词库下载:http://code.google.com/p/vimim/downloads/list

无图无真相,看图

vimIM

这是我使用五笔打出的效果,好了,下来说说怎么用。

它有两个模式,一个叫vim点石成金,英文字母是石,中文是金,一个快捷键,一下就点石成金。

比如要用拼音输入“我们”,就这样输入:women然后使用点石成金快捷键,CTRL+\,一下就变中文。

上面这个适用于英文输入中偶然插入中文,它还有一个中文输入模式,就可以源源不断输入中文了,这个模式的快捷键是CTRL+6,上面那个图就是在中文输入模式下截的。

这些就是基本的用法,当然由于它是和vim结合的,所以你可以自由的配置它,一切随心所欲。

想改变快捷键,可以啊!自己在vim的配置文件搞定 VimIM Mapping

想同时用好几个词库一起用,拼音五笔一起用,好吧!想法奇特,不过,在vim里奇迹总是可以发生的,下面就是见证奇迹的时刻:

vi 你的码表文件

:r 想要合并的码表文件1

:r 想要合并的码表文件2

……

:sort u

:wq

好了,r就是插入一个文件的内容到当前文件,因为码表文件本身就是文本,可以随意编辑,所以你插入几个都没问题,最后排一下序就行了(如果发现排序不对:VimIM 会自动帮忙排序,省您一份操心。),利用了一下vim的编辑功能,就可以把你的输入法打造的更强大。

对于一般用户来说,上面的功能足够了,但是总有愿意折腾的人,他们的需求也不可预料,不过vimIM还提供了N多的功能,像内码直接输入,比如Unicode内码输入,GBK内码输入,BIG5内码输入,四角数字输入(还有人记得这个不,当年我还有一个有这个索引的字典),还有造词,拼音智能匹配(像微软拼音那种)等,更有人工造词(这个也可以直接改码表文件,反正是文本,这就是unix设计思想的牛B之处,文本是通用的数据交流格式。)

算了,其实这些还只是冰山一角,更多功能参见主页:http://maxiangjiang.googlepages.com/vimim.html

[LFS]安装完成

吼吼,经过两天的努力,LFS的构建工作终于完成了。

先mark一下这个时间,2009.10.17 20:03

于是,从2009.10.15 19:00-2009.10.17 20:03  近50小时的时间,生产出来一linux。

哈哈哈,以前对编译内核是无比的恐怖,没想到这次编居然快了很多,真的不错,都说LFS就编译速度最爽了,果然不假。

介绍一下LFS:

全名是Linux From Scratch,意思是从零开始构建linux系统,整个系统中的工具都是通过现场编译出来的,是真正量身定做的操作系统,不过制作它还是需要一个可以编译程序的linux操作系统,livecd是一个很好的选择,当然正在使用的发行版也可以,不过livecd本身带好了所有的软件包,比较方便。

这个适合对linux有一定了解的人来做,适合想提高运行效率的人来做,适合想深入了解linux的人来做,想研究linux的人,建议都来做一次LFS来加深对linux的理解。

一些资源:

官方网站:http://www.linuxfromscratch.org/ 

linuxsir:手把手教你如何建立自己的Linux系统(LFS速成手册) (这个是6.3的文档,我是看这个和官方文档结合做出来的)

当前最新版本6.5,这里是官方文档:http://www.linuxfromscratch.org/lfs/view/stable/

ps:刚刚发现貌似编译的内核有点问题,有个驱动模块没有好,隔一段时间提示个错误信息。得去解决一下,然后考虑BLFS,毕竟操作系统是要用的,这个刚做好的LFS还缺很多应用呢!

[LFS]安装进行时

自从今年寒假就想着要做一次LFS的实验,当时信心满满地下好livecd,结果寒假净看电视了,一直没有动手,现在终于下定决心搞一次了,下好了LFS6.3的livecd,因为第一次做,livecd的成功率比较高,而且包含了所有的源码包,不用再去网上下了,比较方便。工作从2009.10.15号晚上7点开始进行,这里大概记录下进程。

从硬盘分了10G出来给LFS用,分好区,挂上去,建好LFS的基地,正式开始LFS之旅。

看别人的说法都是先在虚拟机上做一次,然后有经验了再在真实机器上布署,我觉得还是真实机器效率高些,就直接划个分区给它,就在这开始了,说实话,我以前没有看过LFS的文档,但是据说文档是很详细的,只要你有一定的linux基础,能明白每条命令是干什么用的,然后就照着手册上的命令一路打下去,那也成了,是不是和windows的一路回车法有点像呢!

ps:这篇日志是在livecd自带的桌面环境的SeaMonkey中写的,这也是我在linux下的第一篇日志,而且现在机器的状态是没有windows。

好了,开始记录LFS中的一些杂碎。

2009.10.15 20:10

由于当时做符号链接时ln -sv $LFS/tools / 时少打了后面那个/,把符号链接生成在root目录里面了,导致后面用lfs用户编译时出现Permision denied。重启修改后正常进行。

由于寝室晚上要断电熄灯,故做完第一次生成工具链后就关机了。

2009.10.16

首先调整工具链,没有问题,然后编译安装各种工具,一点问题都没有,只是中间把数字1和字母l搞混过一次,不过很容易就发现错误了。

第一次遇到错误是构建目标系统(第6章)生成glibc时,test出现两个错误,以为哪里命令打错了,就重做了一遍,由于这里的make和make check时间都比较长,花了不少时间,同时也在查资料,文档说其中一个可以ignore,但是另外一个文档上只说是常见错误,没说怎么办,上网google一下,看好几篇都说可以直接ignore,只要后面工具链调整的时候没出现问题,就证明前面的都是正确的。

2009.10.17

接着昨天工作调整工具链,这是最后 一次调整工具链,然后以后编译生成的都是目标系统的组成部分,果然是good luck,没有问题,测试通过,于是开始一项项的编译utilities,好多的啊!

写这篇日志时,正在编译autoconf……

 

 

分享代码的好地方

介绍一个分享以及在线运行代码的好地方,codepad,在线运行支持语言种类也很多,当然那个PlainText就免谈了(其实是分享用)。

Language:













界面很简洁,一看就知道怎么用,注意到下面那个Private选项了吗?这里其实可以分享代码,是个geek的好地方,有的人甚至写出了VIM上 用的插件,可以直接在vim里面写代码,然后发布到这里来分享。

程序员用的东西一向以简洁高效著称,这里的注册就很简单,只要你打个用户名和密码就成,密码也让你只打一遍,请保证正确,不过geek一般都自信不会打错。

想看最近都有哪些代码提交,点击那个Recent Pastes就可以看到一大串的列表了,还有提交时间。