算法
Winjay_233
这个人不懒,留下了这行字
展开
-
nth_element()
原题:输入多组输入数据第一行为正整数n(1 接下来n个int范围内的正整数输出对于每组数据,输出一行,为这n个数中的的中位数解析:本题旨在快速求解中位数,考虑使用STL中位于库下的element(start,start+n,end)函数,其作用是使第n大元素处于第n位置,并且比这个元素小的排在这个元素前面,比这个元素大的排在后面。原创 2017-10-03 20:37:45 · 299 阅读 · 0 评论 -
STL中的四个二分查找算法(binary_search lower_bound upper_bound equal_range)
头文件四个函数均在头文件中1. binary_search(begin,end,key)用法:从begin到end查找元素key,若存在与key相等的元素,返回true,否则返回false。例程:#include#includeusing namespace std;int main(){ int a[6] = {1,2,3,4,5,6}; int k原创 2017-10-27 16:33:39 · 296 阅读 · 0 评论 -
《算导》练习题 2.3-7
题目:设计算法:查找集合 S 中是否存在两个其和等于 x 的元素。解析:先排序(sort),对每个数组元素(s[i]),在数组中二分查找它的补元素(x-s[i]):利用中的binary_search(起始位置,终止位置,目标值)和lower_bound(起始位置,终止位置,目标值)即可快速查找。最后输出相应结果即可。附上函数讲解:STL之二分查找(binary_search()原创 2017-10-13 15:50:35 · 355 阅读 · 0 评论 -
快速求解阶乘最后非零位
题目:给定一个以字符串方式输入的大数,求其阶乘最后非零位。代码:#include#include#define maxn 10000int Last_Digit(char *buf){ const int mod[20] = {1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; int len = strlen(buf),a[m原创 2017-10-13 16:52:51 · 1343 阅读 · 2 评论 -
优先队列的简单用法
头文件:常用操作:push()入队新元素pop()优先级最大的元素出队top()取得当前优先级最大的元素size()获得队列中元素的个数empty()判断队列是否为空例程:#include#include#include#includeusing namespace std;int main(){ priority_queuepq;原创 2017-10-26 10:37:52 · 331 阅读 · 0 评论