![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++复试机试刷题
文章平均质量分 69
为复试机试做复习笔记
Celtics、郝
湖人总冠军
展开
-
C++动态规划:最长公共子序列和最长公共子串
写在前面:本文矩阵思路来源于这篇博文flag矩阵思路来源于这边博文侵删首先区分公共子序列和公共子串的区别以loop和helloworld两个字符串为例。子串必须是连续的字符串,lo op,hel lo world,加粗斜体部分lo就是最长公共子串。子序列就不一定连续了,loo p,hel lo w o rld,加粗斜体部分loo就是最长公共子序列。解题思路#include&...原创 2020-04-03 13:20:54 · 646 阅读 · 0 评论 -
c++动态规划:最大连续子矩阵的和(子序列和的变体)
该题及其解题思路来源于王道机试指南,侵删问题描述:求二维矩阵最大子矩阵的和解题思路:假设二维数组的最大子矩阵是从 i 行到 j 行,那么会与两种情况:(1)当i = j 时,变成了求 i 行最大子序列和的问题。(2)当 i ≠ j 时,利用辅助矩阵 total[ ][ ],辅助矩阵保存原矩阵从上到下加起来的累加和。故total的 j 行 i 行相减即为一个一维的最大子序列,接下...原创 2020-03-29 23:51:07 · 735 阅读 · 0 评论 -
c++动态规划:最大连续子序列的和及其变形
以下思路来源于王道机试题这本书,侵删。动态规划算法思想:与分治法类似,将待求问题分解为若干子问题,先求子问题,在利用子问题的解返回来求原问题。因为在分治法时,求出的子问题往往不是独立的,很多值被重复计算过,比如斐波那契数列计算:F(n) = F(n-1)+F(n-2),F(n-1) = F(n-2) + F(n-3)。观察计算过程,F(n-2)在这个过程中就被重复计算了。动态规划是将算过的保...原创 2020-03-29 18:31:29 · 1141 阅读 · 0 评论 -
C++优先队列构造哈夫曼树
优先队列构造哈夫曼树借用博主的图用于知识复习,感谢,侵删求哈夫曼树的权值,由于优先队列默认采用大顶堆,如若采用小顶堆,按照priority_queue<typename vecotr<typename> greater<typename> >mypriorityqueue;重新定义优先队列。#include<iostream>#inc...原创 2020-03-26 22:44:40 · 617 阅读 · 0 评论 -
C++完成简单计算器带括号不考虑负数和0的运算
刷王道机试数据结构(一)栈部分的一道题步骤:1.将中缀表达式转为后缀表达式:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出找并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。2.将后缀表达式计算1. 直接读取表达式,如果遇到数字就压栈。2...原创 2020-03-09 22:33:04 · 329 阅读 · 2 评论 -
记c++刷题,拍集体照队形
#include <iostream>#include<cstdio>#include<string>#include<stdlib.h>#include <algorithm>using namespace std;typedef struct{ string name; int height;}p...原创 2020-03-11 22:21:11 · 412 阅读 · 0 评论 -
c++进制转换
当作复习参考:添加字符串的相关操作,是为了适用超过int类型长度的转换#include<iostream>#include<cstdio>#include<stack>#include<vector>#include<stdio.h>#include<string>using namespace std;/...原创 2020-03-12 16:52:11 · 206 阅读 · 0 评论 -
c++实现初级kmp算法,太难了
摘于王道机试题的一段话:kmp算法是一种改进的字符串匹配算法,其核心是,模式串匹配失败后,并不是从下一字符开始重新匹配,而是利用已有信息(next数组),跳过一些不可能匹配成功的位置,以减少匹配次数。在此十分感谢这篇博文,看了一晚上只有这篇博文茅塞顿开。下面记录一下我的理解:1.在求next数组时,判断next[i] = next[j]时,相当于从最长前后缀开始匹配,以后缀为主。以最长后缀...原创 2020-03-12 18:39:14 · 313 阅读 · 0 评论 -
c++实现筛除法求素数和分解质因数
关于代码中的maxn变量,它实际上是和输入的n是同一量级,或者说直接可以等于n;但和普通素数求法一样,sqrt(n)就可以解决问题。知识点一:筛除法原理:若n为素数,那他的n2,n3等等,就都不是素数,在之后的筛查就直接跳过。至于为何从jj开始,是因为从j2开始,会有好多数重复计算。知识点二:vector变量做形参。有两种形式1.地址形式,除在形参处加地址符外别无区别,见最终代码。2....原创 2020-03-13 18:17:25 · 509 阅读 · 0 评论 -
整除问题,给定n和a,求最大的k,使n!可被a^k整除但不能被a^(k+1)整除
首先,这道题不可能直接算n!和a^k然后暴力解法,数太大了。那就乖乖找规律吧。以输入n=6,a = 10,为例。6! = 2×2×2×2×3×3×52\times2\times2\times2\times3\times3\times52×2×2×2×3×3×5,10 = 2×52\times52×5,如果6!可以被10^k整除,那么6!的素因数一定包含10的素因数,那么k就 =6!与10的...原创 2020-03-14 14:01:38 · 1307 阅读 · 3 评论 -
C++求快速幂
刷王道机试题小记:快速幂例如求3^29,由观察知,3^29 = 3 ×\times× 3^28 = 3 ×\times× 3^4 ×\times× 3^8 ×\times× 3^16,其中分开的这几项都可以由前一项平方得到,减少了运算次数那么如何知道要拆成几项呢?因为一个数总可以写成 2^k 的和,即表示成二进制的形式,29 = 11101 = 2^0 +2^2 + 2^3 + 2^4 =...原创 2020-03-15 14:32:38 · 122 阅读 · 0 评论 -
C++递归八皇后输出92种解法和一种解法两个方法
八皇后问题是递归和回溯问题,其实说白了回溯也是递归的一部分,是递归中“归”的那一步,真的是一步一步debug才对递归有了进一步了解。词穷了。。。。。。关于回溯问题,知(bi)乎这篇文章很有参考价值附上输出92种八皇后解法代码,采用定行法,下标代表行,值代表列。其他知识点:return 只能返回一层递归,并不能跳出递归。目前我只知道想跳出递归,可以用强制退出的方法。#include<...原创 2020-03-19 20:50:33 · 562 阅读 · 0 评论