03 2012 档案
摘要:与Store Credit和Reverse Words同一组的另一道题,T9 Spelling也解决了。题目大概意思就是,手机的9格键盘,上面有26个字母,0表示空格。a字母只需要按一个2,b字母需要连续按2两次,就是22,要输入ab时,2和22之间需要有一段间隔,用空格表示,而要输入的空格是0,例如 i am ok,对应的是4026065。具体的可以看http://code.google.com/codejam/contest/351101/dashboard#s=p2由于7和9对应的是4个字母,其它的是3个字母,字母与数字之间的映射表需要手动写了。这里主要问题就是映射怎么写?如果是'
阅读全文
摘要:既然开始了Python练习,就继续做下去吧。现在解决的是Reverse Words这道题,与Store Credit同一组的一道题。题目的大概意思就是,给你一个句子,有多个单词组成,实现把句子按倒序打印,单词里面的字母顺序是不变的。如果知道Python的list可以直接调用reverse函数,那么这就是相当简单的题了。其实这题本来就简单的。还是把我的代码贴上来,如果有问题,希望大家指正。这个程序的结果在google code jam页面上测试过了。之前以为code jam的练习只给出了题目,没想到还可以继续下载测试文件,提交结果,然后它告诉你结果是否正确。代码如下,#!/usr/bin/pyt
阅读全文
摘要:最近了解到Google Code Jam这件事情,一个编程竞赛项目,登录之后可以看到以前的题目,觉得都很有意思,于是想尝试一下。我看到的第一题是Store Credit,大概意思就是给你一定数额的钱,然后给你一个物品价格清单,选择两个物品,正好花完所有的钱。具体内容可以参考http://code.google.com/codejam/contest/351101/dashboard#s=p0因为要求正好花完所有的钱,贪心算法就不太管用了,还好只是要求选择两个物品,直接的方法就是遍历搜索了。确定一个物品,查找另一个价格满足要求的物品。在遍历搜索中,也有一些地方可以减少搜索次数。比如,顺序遍历物品
阅读全文
摘要:在《算法设计技巧与分析》5.5节介绍了多项式求值的嵌套乘法,也称作Horner规则,即Pn(x)=anxn+an-1xn-1+...+a1x+a0=((...(((anx+an-1)x+an-2)x+an-3)...)x+a1)x+a0。这个是很容易就实现的。这里要求次数是连续的并且大于等于0。如果定义多项式的数据结构poly.h如下, 1 #ifndef POLY_H_ 2 #define POLY_H_ 3 4 #include <vector> 5 #include <iostream> 6 #include <iomanip> 7 using nam
阅读全文
摘要:在《算法设计技巧与分析》这本书的第四章,介绍了堆。于是按照上面的伪代码实现了一下。数据结构定义maxHeap.hpp如下, 1 #ifndef MAX_HEAP_HPP_ 2 #define MAX_HEAP_HPP_ 3 4 #include <vector> 5 using std::vector; 6 7 class MaxHeap 8 { 9 public:10 MaxHeap(vector<int>& A);11 void Insert(int x);12 int DeleteMax();13 void So...
阅读全文