摘要:
看到一个介绍Bottle的文章,觉得很有意思,所以到处搜罗了一些有意思的东西,总结如下。 在浅谈五大Python Web框架(http://www.cnblogs.com/babykick/archive/2011/11/28/2265920.html)中介绍了几种Python的Web框架,然后又看了一下Web框架比拼测评(http://www.cichui.com/the-great-web-framework-shootout/),觉得Bottle和Flask很有意思,所以想了解一下。 从下面的示例代码看看,你会喜欢哪一种呢?web.pyimport web urls =... 阅读全文
摘要:
Python里面字符串的操作很方便,比如split,strip。在C++里,string提供了length,得到字符串的长度,append,在字符串末尾添加字符串,push_back,在字符串末尾添加字符,insert,指定位置处插入字符串,或n个字符,assign,对字符串赋值,可以是某个字符串的从某个位置开始的多少个字符,也可以是常量字符串,也可以是指定个数的n个字符,replace,用某个字符串,或者某个字符串的从某个位置开始的多少个字符,替换原字符串从某个位置开始的多少个字符,erase,擦除指定区间的字符,swap,两个字符串的内容交换,但是没有提供split和strip,strip 阅读全文
摘要:
C++文件操作。C++中引入了stream,相关的头文件<fstream>,支持文件输入与输出,还有两个<ifstream>和<ofstream>,分别支持文件读入和写入。文件的打开与关闭fstream作为一种对象,它的操作由构造函数,成员函数来完成。fstream ( ); explicit fstream ( const char * filename, ios_base :openmode mode = ios_base::in | ios_base::out ); fstream f("input.txt",fstream::in 阅读全文
摘要:
前几天一直用Python做google code jam的练习题,文件操作很方便。如果用C/C++去做的话,那么首先要解决的就是文件操作。于是整理了一下文件操作的函数用法。先来看看C的文件操作。FILE* stream相关的头文件stdio.h,就可以使用与文件操作相关的数据类型和函数。文件的打开与关闭首先,定义文件指针,FILE* f,用fopen(const char* filename,const char* mode)来打开文件,用fclose(File* p)来关闭文件。文件的打开方式,"r"表示读,"w"表示写,"a"表示 阅读全文
摘要:
继续Round 1C 2009第二道题,多个物体的质心到原点最小距离。最后并且给出了质心的公式,x=sum(xi+xvi*t),...每个物体的质量都一样,就不用考虑x=sum(mi*(xi+xvi*t))。最后距离的平方d=x^2+y^2+z^2=at^2+bt+c,一个关于t的二次多项式,求t>=0时的最小值。应该不难的,只是数值计算过程中会出现一些奇怪的问题。比如已经判断b^2-4ac>=0,sqrt(c-b^2/4a)的时候却提示出错。另外,需要分情况讨论求最小值。b>=0的时候,如果a很小,看作一次式,那么d是增加的,在t=0时取最小值,如果a不算小,那么是二次式, 阅读全文
摘要:
连续碰到几道题搞不定,想找一道简单一点的,来增加一点成就感。于是看了这道题,第一道题,虽然是C轮的,应该不会太难吧?但看完题就知道自己错了,为什么连题都看不懂呢?无奈,求助答案吧。答案好简单,连Python代码都给了。还是简单分析一下吧。先来解释题目意思,题目给出一个字符串,包含a-z0-9,表示一个数字,这个数字的基数base可以是任意的,要求选一个基数,使字符串表示的数最小,并且第一位不为0。怎样可以使基数最小呢?base=10,即十进制,有0-9种表示0-9,也可以用a-j表示0-9,反正就是要10个不同的字符。那么字符串的基数最小就可以是字符串中不同字符的个数。而且要使表示的数最小,那 阅读全文
摘要:
之前没搞定的几道题先跳过了,来做做简单的吧。Round 1A 2010,第一道题,Rotate,join-K的游戏,不太了解,略过。按照题目意思,将数据先顺时针转90度,然后由于重力作用,有空白的地方会被上面的棋子落下来填上。然后如果出现一定数目的同一种颜色的棋子在一条线上,那么该颜色的一方获胜。与五子棋类似,只是它这里添加了旋转和重力的问题。其实旋转和重力不是大问题,顺时针旋转90度,然后重力填补空白,将相当于水平方向上棋子向右落来填补空白。是否旋转了90度与最后谁获胜没有关系。那么如何填补右方的空白呢?strip(".")可以去掉字符串中的".",但 阅读全文
摘要:
继续Round 1B 2010。第二道题没理解题目,第三道题题目可以理解,但是算法又折腾了好久。还是先看第三道题吧。给定一个集合S={2,3,...n},它的子集S' 满足性质:n在S'中是第k个元素,那么k应该也在S'中,同样地,k是第k'个元素,那么k'应该也在S'中,经过有限步,k=1,不在S'中,称n对于S'是Pure Rank。那么给定一个n,求S'的个数。在Content Analysis中,给除了动态规划算法的算法。我怎么觉得好多题都是动态规划,我正好不太懂态规划。看看具体算法如下,如果n是一个集合S' 阅读全文
摘要:
前几天一直卡在Making Chess Board那道题上,目前还没有完全解决,打算先跳过。这次是Round 1B 2010的第一道题,还算比较简单,具体如下。在Linux系统中,创建文件夹需要使用mkdir,如果父文件夹不存在则需要先创建父文件夹,题目先给出一组已经创建的文件路径,然后给出一组需要创建的文件路径,计算最少的mkdir的次数。当然,没有使用mkdir -p。直接的想法就是,对已经创建的路径进行hash,放入dict,所以读取一个已经创建的路径的时候,先查看整个路径是否已经在dict中,如果不在,将其添加到dict中,剥掉最后一层,继续检查路径是否在dict中,如果在,则结束。同 阅读全文
摘要:
Round 1C 2010的最后一题。C轮果然还是有些难度的,虽然我觉得第一题比较简单。这题是给定一大块板子,上面有黑块和白块,跟Chess Board上面的方格类似。要求将上面存在的Chess Board剪下来,从大到小。直接的方法,size从最大到最小,扫描整个板子,选取size大小的块进行匹配,如果满足,那么将这一块剪下来。存在的几个问题,1. 数据的读取给定的是16进制数据,每一位表示一个块,0和1表示是黑块还是白块。需要将其转化为一位一位的形式。这里采用的方法是bin(ord(s)-ord("A")+10),先把A~F转化成数字,然后转化成二进制数,再把二进制数的 阅读全文