上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页

2011年7月17日

穷举搜索

摘要: 对于一些困难的问题,我们只能穷举(brut force)搜索,是的,我们知道“穷举搜索”这个词,可是,具体怎么穷举呢?很多问题可以归结到图的搜索,对于图的搜索,大家应该都知道 DFS 和 BFS,然而可能没有多少人知道如何对图做穷举搜索。我先举一个最简单的例子:哈米尔顿环(hamilton cycle),不知道的,可以去维基百科上去查。#include #include #include #include #include using namespace std;int start = 0;int N;vector > G;vector P; // current path/stackv 阅读全文

posted @ 2011-07-17 15:58 能发波 阅读(296) 评论(0) 推荐(0) 编辑

第一个博弈程序

摘要: 甲乙两人在玩一个游戏:一堆小石子,共n个,每次每人可以从中取1个,或2个,或4个,甲先开始,最后取的那个人输(不管他去1个,还是2个,还是4个)。但是呢,甲乙两个人都是智力超群的天才,他们总会使用对自己有利的策略。问题:我们能否从一开始就知道谁必然赢?可以这样考虑:如果只剩下1,2,3,4个石子时,轮到 x 取,我们可以推断出那个必然的赢家。1x 输2x 赢(x 取 1 个)3x 赢(x 取 2 个)4x 输(不管取 1,2,4 个都输)我们给甲乙编号,甲为 0,乙为 1,可以得到如下递归程序int winner(int n, int x) { assert(n >= 1); sw... 阅读全文

posted @ 2011-07-17 12:38 能发波 阅读(184) 评论(0) 推荐(0) 编辑

2011年7月16日

合并两个有序序列

摘要: 经典写法合并两个有序序列,太简单了吧?还有专门讨论的必要吗?这是一个最简单的 Merge 版本:templatevoid merge(InputIter1 first1, InputIter1 last1, InputIter2 first2, InputIter2 last2, OutputIter output) { for (; first1 != last1 && first2 != last2; ++output) { if (*first2 OutputItermerge_sort_loop(RandInputIter first, RandInputI... 阅读全文

posted @ 2011-07-16 16:37 能发波 阅读(220) 评论(0) 推荐(0) 编辑

2011年7月13日

Great Windows 7

摘要: Windows 7,打开“下载”文件夹,里面也就几十个文件……它非常“友好”地在地址栏部分显示一个进度条,等到进度条100%,右边文件夹内容部分变成非空白——文件显示出来,我可以去拉泡屎,再回来也不迟,我没有拉肚子,我便秘!这么恶心的东西,我可以不用它吗?如果网银,视频播放器有的选择!Ubuntu 也在发扬 Windows 的优良传统,公司的台式机硬件至少我这电脑落后3年,可是他的速度至少比 Ubuntu 快 3 倍,比 Windows 7 呢,300 倍吧!人家用的是精简版的 RedHat。是恐龙该灭绝的时候了! 阅读全文

posted @ 2011-07-13 23:01 能发波 阅读(119) 评论(0) 推荐(0) 编辑

2011年7月3日

枚举变量扩展-2

摘要: 在前一篇文章里,可能有人注意到了:扩展结果中会出现同一变量的不同实例,如果我们要增加一个限制,扩展结果中每个变量都必须引用相同的实例,该怎么做? 阅读全文

posted @ 2011-07-03 16:26 能发波 阅读(85) 评论(0) 推荐(0) 编辑

2011年6月26日

枚举变量扩展

摘要: 在很多配置文件中,都会牵涉到变量扩展,一个变量会有多少种可能的扩展结果,这在静态分析中非常重要。这里给出一个算法:使用 perl 来表达(expand.pl),变量引用使用统一的形式:${varname}Whoops, CSDN 竟然不支持 perl code, 用 ruby 做高亮,可能会有点问题#!/usr/bin/env perluse strict;my %vars = ();# cross array arraysub cross_aa($$) { my ($tx, $ty) = @_; my @res = (); for my $x (@$tx) { for my $y (@$t. 阅读全文

posted @ 2011-06-26 00:04 能发波 阅读(157) 评论(0) 推荐(0) 编辑

2011年6月17日

gcc C++0x unique_ptr 实现太龌龊了

摘要: 版本:g++ 4.6.0龌龊之处: 1. 占用 2 ptr 空间,因为 unique_ptr 要支持 custom delete, so g++ 要用额外的一个 ptr 来保存 custom 对象 为什么不用 empty base class 来优化? VC10 有这个优化。 2. 引入不必要的依赖,使用 tuple 作为数据成员! 关 tuple 屌事?明白了,使用 tuple 是因为 tuple 实现使用了 empty class optimization, 所以在使用 default deleter 时,只占用 1 ptr, Scott Meyer 说占用 2 ptr... 阅读全文

posted @ 2011-06-17 19:11 能发波 阅读(176) 评论(0) 推荐(0) 编辑

C++0x 几个很败的修改

摘要: Until November 2009, std::future was named std::unique_futureUntil November 2010, std::launch::deferred was named std::launch::sync. 阅读全文

posted @ 2011-06-17 17:40 能发波 阅读(106) 评论(0) 推荐(0) 编辑

2011年6月13日

非对称类型的 Comparator

摘要: 结构体数组,按字段查找我有一个按字段 name 排好序的结构体数组,怎样使用 stl 来查找?struct User { std::string name; std::string address; //more fields...};//....std::vector v;// expected searching codeauto i = std::lower_bound(v.begin(), v.end(), "whinah", CompareName());怎样定义 CompareName ?struct CompareName { bool operator(.. 阅读全文

posted @ 2011-06-13 11:38 能发波 阅读(113) 评论(0) 推荐(0) 编辑

2011年6月11日

terminal 的显示编码为 utf8 时用 vim 打开 gb2312/gbk/gb18030 编码的文件

摘要: vim "+e ++enc=gbk filename"vim "+e ++enc=cp936 filename" 阅读全文

posted @ 2011-06-11 18:39 能发波 阅读(198) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页

导航