Browsed by
Tag: C++

C++可调用对象包装器:std::function探析

C++可调用对象包装器:std::function探析

在C语言的时代,我们可以使用函数指针来吧一个函数作为参数传递,这样我们就可以实现回调函数的机制,例如我们编写一个函数f,将函数do_sth作用于x1,x2两个变量,并返回得到作用的结果: int f( do_sth, x1,x2); f的返回值将回依据传入函数do_sth的不同而得到不同的结果,例如…

Read More Read More

搜索算法III:启发式搜索

搜索算法III:启发式搜索

在对最短路搜索时,如果起点与终点的距离较远,使用BFS会扩展出非常多的结点,运算量将是以指数式增长。尤其是比较“空旷”的状态转移,从起点到终点几乎没有阻碍,但是使用BFS仍然需要添加那些绕远路的节点。这时,我们应想一个办法,使我们的搜索优先去找“最有希望最短到达终点”的新结点,即使偶尔会绕远路,但在…

Read More Read More

搜索算法II:国际象棋Knight

搜索算法II:国际象棋Knight

国际象棋中的Knight(骑士)在移动时,必须向一个方向移动两格同时再垂直移动一格,与中国象棋的“马”走法一样。只要棋盘尺寸大于3*4,骑士总能跳到任何指定的一格上。对于标准的8*8的国际象棋棋盘,我们可以使用BFS计算出骑真士从A格子到B格子所需要的最小步数: ( https://vjudge.n…

Read More Read More

搜索算法I:二十四点

搜索算法I:二十四点

使用四个正整数,添加一些运算符以将四个数字组成运算结果等于24的表达式。最经典的二十四点是从1到13的正整数以及+,-,*,/,括号。而不同的规则下可能包括:是否支持括号、是否按四则运算优先级、是否允许将数字调整顺序、是否允许分数(对于5*(5-1/5)如果支持分数那么这将能够得到5*(24/5) …

Read More Read More

Friend Number之打表

Friend Number之打表

问题描述: Paula和Tai是夫妻,他们的电话号码是 2200284 , Tai 告诉 Paula ,220与284是一对”Friend Number”,因为220的所有因子之和恰是284,而284的所有因子之和也恰是220,在小于1000的数字中,只有这一对数字是Frie…

Read More Read More