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 能发波 阅读(302) 评论(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 能发波 阅读(188) 评论(0) 推荐(0)

导航