27 Apr 2012

c++全排列



c++全排列,使用STL

26 Apr 2012

变长参数函数



实现类似printf的变长函数参考 void Foo(char *format, ...)
{
char msg[255];
va_list args;
va_start(args, format);
vsprintf(msg, format, args);
va_end(args);
// 这里msg已经是char数组了,可以任意使用了
// Add code here
}

25 Apr 2012

Genetic Algorithm 遗传算法




遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。

16 Apr 2012

强迫firefox记住密码





只需要将下面的链接拖入收藏夹,遇到不能保存密码的网站,点一下就好啦:

强制Firefox保存密码

如果上面操作无法完成,直接新建一个收藏夹项目就好了,代码如下:

javascript:(function(){var%20ac,c,f,fa,fe,fea,x,y,z;ac=\"autocomplete\";c=0;f=document.forms;for(x=0;x<f.length;x++){fa=f[x].attributes;for(y=0;y<fa.length;y++){if(fa[y].name.toLowerCase()==ac){fa[y].value=\"on\";c++;}}fe=f[x].elements;for(y=0;y<fe.length;y++){fea=fe[y].attributes;for(z=0;z<fea.length;z++){if(fea[z].name.toLowerCase()==ac){fea[z].value=\"on\";c++;}}}}alert(\"Enabled%20\'\"+ac+\"\'%20on%20\"+c+\"%20objects.\");})();

1 Apr 2012

STL函数模板(即算法)一览

STL函数模板(即算法)一览 查找算法

adjacent_find:找出一个串中第一个不符合次序的地方
find,find_if:找出第一个符合条件的元素
find_first_of:在一个串中寻找第一个与另一个串中任意一个元素相等的元素
search_n:在一个串中寻找一个元素第n次出现的地方
count,count_if:一个串中符合条件的元素个数

mismatch:找出两个串第一个不相等的地方
equal:判断两个串的指定部分是否完全相等
lexicographical_compare,lexicographical_compare_3way:按词典顺序比较字符串

search:在一个串中寻找一个子串第一次出现的位置
find_end:寻找一个子串最后一次出现的地方

binary_search,lower_bound,upper_bound,equal_range:在已排序的串中进行二分法搜索

min,max:比较两个数,返回数值
min_element,max_element:寻找指定范围内的最值

改变内容的算法

copy,copy_n:从指定位置开始复制数据
copy_backward:指定目标的结尾进行复制
swap:交换两个容器内容
iter_swap:交换两个指针指向内容
swap_range:交换指定范围内的内容
transform:把元素逐个进行一元或二元运算结果放在新的容器
fill,fill_n:往容器的一定范围内填入相同元素
generate,generate_n:往容器的一定范围内填入指定的无参函数(如rand)的返回值
replace,replace_if,replace_copy,replace_copy_if:替换符合条件的元素
remove,remove_if,remove_copy,remove_copy_if:删除符合条件的元素
unique,unique_copy:除去相邻的相同元素
reverse,reverse_copy:反转指定范围的内容
rotate,rotate_copy:循环排列指定范围的内容
random_shuffle:随机重排指定范围的内容
next_permutation,prev_permutation:按下一种或上一种排列方式排列指定范围的内容(一共有N!种排列方式)
random_sample,random_sample_n:对指定范围的内容进行随机抽样
partition,stable_partition:把指定范围内元素按指定区分法则分成两部分

排序算法

sort:快速排序
stable_sort:稳定排序
partial_sort,partial_sort_copy:只排出最大(或最小)的前几位
nth_element:快速排序的一轮
merge,inplace_merge:归并排序的一轮
is_sorted:判断是否已排序

make_heap:生成堆
pop_heap:取出最大元素并重建堆
push_heap:往堆中添加最后一个元素并重建堆
sort_heap:堆排序
is_heap:判断是否是堆

集合运算的算法(使用时应保证容器已排序)

includes:一个已排序集合是否含于另一个
set_union:取两个已排序集合的并集
set_inter:取两个已排序集合的交集
set_difference:一个已排序集合中不存在于另一个集合中的元素构成的集合
set_symmetric_difference:取两个已排序集合的异或

特定算法

itoa:把从指定值递增1的数列填入数组
accumulate:累加求总和
inner_product:求两个向量的内积
partial_sum:逐限累加成新数组
adjacent_difference:逐限求差成新数组
power:对一个数累乘或累次执行一个操作

来自:
http://hi.baidu.com/wwbmmm/blog/item/c2e29b3f950ea1fc828b1319.html