出题:N阶阶乘问题的递归算法和非递归算法;

分析:

  • 第一种解法:普通暴力解法的实现较为容易;
  • 第二种解法:stirling公式可快速给出近似解;

解题:

 int Recursive(int s) {
if( == s) {
return s;
}
return s*Recursive(s-);
}
int NonRecursive(int s) {
int temp=;
int result=;
while(temp<=s) {
result*=temp;
temp++;
}
return result;
}
int main() {
int s=;
printf("recursive output: %d\n",Recursive(s));
printf("non-recursive output: %d",NonRecursive(s));
}

出题:双向循环链表的插入,查找与删除;

分析:构造类的过程中需要进行的核查

解题:

 #include <stdio.h>
/**
* 检查是否需要构造函数
* 检查是否需要无参构造函数
* 检查是否需要成员变量(函数)私有
* 检查是否需要在使用成员初始化列表
* 检查是否需要析构函数
* 检查是否需要虚拟析构函数
* 检查是否需要复制构造函数(参数为const)
* 检查是否需要赋值重载函数(参数为const)
*
* */
class Node {
public:
int value;
Node *next;
Node *last;
Node(int v=): next(NULL),last(NULL) { }
~Node() {
if(next!=NULL) delete next;
if(last!=NULL) delete last;
}
};
class DDList {
public:
Node *head;
DDList():head(new Node()) {
head->last=head;
head->next=head;
}
DDList(const DDList& target) {}
DDList& operator=(const DDList& target) {}
void insertN(int v) {
Node *newn=new Node(v);
Node *temp;
temp=head->next;
head->next=newn;
newn->next=temp;
newn->last=head;
temp->last=newn;
}
bool deleteN(int v) {
Node *target=queryN(v);
Node *temp;
if(target == NULL) return false;
temp=target->last;
temp->next=target->next;
target->next->last=temp;
delete target;
return true;
}
Node* queryN(int v) {
Node *temp=head->next;
while(temp != head) {
if(temp->value == v) return temp;
temp=temp->next;
}
return NULL;
}
void destroy() {
if(head->next == head) return;
deleteN(head->next->value);
}
void printList() {
Node *temp=head->next;
while(temp != head) {
printf("current point: %d",temp->value);
temp=temp->next;
}
}
~DDList() {
if(head->last == head) delete head;
else destroy();
}
};

笔试算法题(02):N阶阶乘 & 双向循环链表实现的更多相关文章

  1. 前端如何应对笔试算法题?(用node编程)

    用nodeJs写算法题 咱们前端使用算法的地方不多,但是为了校招笔试,不得不针对算法题去练习呀! 好不容易下定决心 攻克算法题.发现js并不能像c语言一样自建输入输出流.只能回去学习c语言了吗?其实不 ...

  2. 笔试算法题(46):简介 - 二叉堆 & 二项树 & 二项堆 & 斐波那契堆

    二叉堆(Binary Heap) 二叉堆是完全二叉树(或者近似完全二叉树):其满足堆的特性:父节点的值>=(<=)任何一个子节点的键值,并且每个左子树或者右子树都是一 个二叉堆(最小堆或者 ...

  3. 笔试算法题(54):快速排序实现之单向扫描、双向扫描(single-direction scanning, bidirectional scanning of Quick Sort)

    议题:快速排序实现之一(单向遍历) 分析: 算法原理:主要由两部分组成,一部分是递归部分QuickSort,它将调用partition进行划分,并取得划分元素P,然后分别对P之前的部分和P 之后的部分 ...

  4. 笔试算法题(33):烙饼排序问题 & N!阶乘十进制末尾0的个数二进制最低1的位置

    出题:不同大小烙饼的排序问题:对于N块大小不一的烙饼,上下累在一起,由于一只手托着所有的饼,所以仅有一只手可以翻转饼(假设手足够大可以翻转任意块数的 饼),规定所有的大饼都出现在小饼的下面则说明已经排 ...

  5. php笔试算法题:顺时针打印矩阵坐标-蛇形算法

    这几天参加面试,本来笔试比较简单,但是在面试的时候,技术面试官说让我现场写一个算法,顺时针打印矩阵的坐标,如图所示 顺序为,0,1,2,3,4,9,14,19,24,23,22,21,20,15,10 ...

  6. 笔试算法题(43):布隆过滤器(Bloom Filter)

    议题:布隆过滤器(Bloom Filter) 分析: BF由一个很长的二进制向量和一系列随机映射的函数组成,通过多个Hash函数将一个元素映射到一个Bit Array中的多个点,查询的时候仅当所有的映 ...

  7. 笔试算法题(58):二分查找树性能分析(Binary Search Tree Performance Analysis)

    议题:二分查找树性能分析(Binary Search Tree Performance Analysis) 分析: 二叉搜索树(Binary Search Tree,BST)是一颗典型的二叉树,同时任 ...

  8. 笔试算法题(57):基于堆的优先级队列实现和性能分析(Priority Queue based on Heap)

    议题:基于堆的优先级队列(最大堆实现) 分析: 堆有序(Heap-Ordered):每个节点的键值大于等于该节点的所有孩子节点中的键值(如果有的话),而堆数据结构的所有节点都按照完全有序二叉树 排.当 ...

  9. 笔试算法题(56):快速排序实现之非递归实现,最小k值选择(non-recursive version, Minimal Kth Selection of Quick Sort)

    议题:快速排序实现之五(非递归实现,短序列优先处理,减少递归栈大小) 分析: 算法原理:此算法实现适用于系统栈空间不足够快速排序递归调用的需求,从而使用非递归实现快速排序算法:使用显示下推栈存储快速排 ...

随机推荐

  1. linuxmint17.3提示flash不是最新版本解决方法(copy)

    [资料来自于:http://blog.csdn.net/kh896424665/article/details/54879608] 问题:播放视频提示:Adobe Flash Player 不是最新版 ...

  2. [App Store Connect帮助]七、在 App Store 上发行(2.1)设定价格与销售范围:为您的 App 设定价格

    在您提交 App 以供审核之前,您必须为您的 App 设定一个价格,该价格将用于 App Store 的所有地区.如果您没有<付费应用程序协议>,则只能选择免费. 必要职能:“帐户持有人” ...

  3. js实现打字效果

    <!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>js typing& ...

  4. 自己动手利用CentOS6.5 搭建php环境安装discuz论坛

    1.安装搭建论坛必要的软件 apache php mysql CentOS系统我们可以直接使用 yum install 的方式进行软件安装,腾讯云有提供软件安装源,是同步CentOS官方的安装源,包涵 ...

  5. 《windows核心编程系列》二十一谈谈基址重定位和模块绑定

    每个DLL和可执行文件都有一个首选基地址.它表示该模块被映射到进程地址空间时最佳的内存地址.在构建可执行文件时,默认情况下链接器会将它的首选基地址设为0x400000.对于DLL来说,链接器会将它的首 ...

  6. pycharm2017.1破解方法

    破解专业版,在server选项里边输入 http://elporfirio.com:1017/就可以了

  7. BP神经网络算法改进

    周志华机器学习BP改进 试设计一个算法,能通过动态调整学习率显著提升收敛速度,编程实现该算法,并选择两个UCI数据集与标准的BP算法进行实验比较. 1.方法设计 传统的BP算法改进主要有两类: - 启 ...

  8. 51nod 1126 求递推序列的第N项

    1126 求递推序列的第N项  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 有一个序列是这样定义的:f(1) = 1, f(2) = 1, f( ...

  9. 洛谷 P1288 取数游戏II

    奇奇怪怪的游戏,不多写了 #include<cstdio> ]; int main() { int i; scanf("%d",&n); ;i<=n;i+ ...

  10. 题解报告:hdu 1541 Stars(经典BIT)

    Problem Description Astronomers often examine star maps where stars are represented by points on a p ...