❤c++机试算法入门
主要涉及考研保研机试基础题
搬运代码打工人
分享学习
记录日常
展开
-
第二天:2的次幂表示(递归)(C语言)
问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=27+23+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=22+2+20 (2^1用2表示) 3=2+2^0 所以最后1...原创 2019-08-06 16:09:12 · 438 阅读 · 0 评论 -
第二十天:最短路径
Floyd思路设 ans[k][i][j] 为结点 i 到结点 j 允许经过编号小于 k 的结点时其最短路径长度,ans[0][i][j]相当于edge[i][j],下完成求解for(int k = 1;k <= n;k++){ for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ if(ank[k - 1][...原创 2019-08-25 10:42:29 · 149 阅读 · 0 评论 -
第二十一天(1):拓扑排序
问题设有一个有向无环图( DAG 图)对其进行拓扑排序即求其中节点的拓扑序列,对于所有的有向边 ( U, V ) ,在该序列中结点 U 都排在结点 V 前面,满足要求的结点序列被称为满足拓扑次序的序列,求这个序列的过程,即为拓扑排序。循环:我们在第 k 张图上选择一个入度为 0 的结点,将其作为原图的第 k 个结点,并在新图中删去该点,及以该点为弧尾的边。相关知识标准模板库中一个标准模板:...原创 2019-08-25 19:12:04 · 189 阅读 · 0 评论 -
第二十二天:搜索-暴力枚举 + 简单递归
暴力枚举T1百鸡问题时间限制:1 秒内存限制:32 兆特殊判题:否题目描述: 用小于等于 n 元去买 100 只鸡,大鸡 5 元/只,小鸡 3 元/只,还有 1/3 元每只的一种小鸡,分别记为 x 只,y 只,z 只。编程求解 x,y,z 所有可能解。输入: 测试数据有多组,输入 n。输出: 对于每组输入,请输出 x,y,z 所有可行解, 按照 x, y, z 依次增大的顺序输出。...原创 2019-08-26 21:00:55 · 174 阅读 · 0 评论 -
第二十三天:广度优先搜索 ( BFS )
T1胜利大逃亡时间限制:2 秒内存限制:32 兆特殊判题:否题目描述: Ignatius 被魔王抓走了,有一天魔王出差去了,这可是 Ignatius 逃亡的好机会.魔王住在一个城堡里,城堡是一个 ABC 的立方体,可以被表示成 A 个 B*C 的矩阵,刚开始 Ignatius 被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在 T 分钟后回到城...原创 2019-08-27 11:08:43 · 141 阅读 · 0 评论 -
第二十五天:递归的应用(回溯法枚举 + 图的遍历) +深度优先遍历 ( DFS )
T1Prime ring problem时间限制:2 秒内存限制:32 兆特殊判题:否题目描述: A ring is compose of n circles as shown in diagram. Put natural number 1, 2, …, n into each circle separately, and the sum of numbers in two adjac...原创 2019-08-29 18:31:52 · 216 阅读 · 0 评论 -
第二十六天:动态规划--五大类
一、递推求解T1N 阶楼梯上楼问题时间限制:1 秒内存限制:128 兆特殊判题:否题目描述: N 阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。 (要求采用非递归)输入: 输入包括一个整数 N,(1<=N<90)。输出: 可能有多组测试数据,对于每组数据,输出当楼梯阶数是 N 时的上楼方式个数。样例输入:4样例输出:5//// main.cpp...原创 2019-09-02 16:07:56 · 182 阅读 · 0 评论 -
第二十七天:背包问题--(0-1背包,完全背包,多重背包)
T1采药问题描述:辰辰是个很有潜能、 天资聪颖的孩子, 他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总...原创 2019-09-03 20:36:55 · 262 阅读 · 0 评论 -
第二十八天(2):机试技巧(STL)(滚动数组)(调试)(输入外挂)(流氓剪枝)
标准模板库(STL)string模板库基本操作#include <string>using namespace std;string s;cin >> s;char str[] = "test";s = str;s += 'c';s += "string";string b = "class"s += b;string b = "class...原创 2019-09-04 18:40:27 · 315 阅读 · 0 评论 -
第二十八天(1):熄灯问题 + 讨厌的青蛙
T1//// main.cpp// LightOut//// Created by Apple on 2019/9/4.// Copyright © 2019 Apple_Lance. All rights reserved.//#include <iostream>#include <stdio.h>int puzzle[6][8];in...原创 2019-09-04 21:52:34 · 214 阅读 · 0 评论 -
第二十九天:小游戏-递归应用
//// main.cpp// PlayGame//// Created by Apple on 2019/9/7.// Copyright © 2019 Apple_Lance. All rights reserved.//#include <iostream>#include <stdio.h>#include <memory.h>...原创 2019-09-07 12:50:07 · 171 阅读 · 0 评论 -
第二十九天(2):面试中两个错误案例
T1把一个字符串转换成整数int StrToInt(char* string){ int number = 0; while(*string != 0) { number = number * 10 + *string - '0'; ++string; } return number;}T2求链表中的倒数第k个结点ListNode* FindKthToTail(L...原创 2019-09-07 14:46:41 · 256 阅读 · 0 评论 -
北理机试
T1输入任意 4 个字符(如:abcd),并按反序输出(如:dcba)。#include <string>using namespace std;int main(int argc, const char * argv[]) { char in[30]; scanf("%s", in); string str = in; for (int i...原创 2019-09-16 23:41:46 · 465 阅读 · 0 评论 -
第三十一天(1): 面试算法题
类类型:class CMyString{public: CMyString(char* pdata = NULL); CMyString(const CMyString & str); ~CMyString(void);private: char* m_pData;}定义一个赋值运算符重载–改进四点CMyString& CMyString::operator ...原创 2019-09-17 18:04:22 · 373 阅读 · 0 评论 -
第三十一天(2):面试算法题---树
重建二叉树树的结构struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;}通过前序遍历和中序遍历的结果来构造树BinaryTreeNode* Construct(int* preorder, int* inorder, int length){ if(preo...原创 2019-09-17 22:38:49 · 319 阅读 · 0 评论 -
第十九天:最小生成树(MST)
最小生成树 Kruskal 算法初始时所有节点属于孤立的集合按照边权递增顺序遍历所有的边,若遍历到的边的两个顶点仍分属不同的集合(该边即为连通这两个集合的边中权值最小的那一条,)则确定该边为最小生成树上的一条边,并将这两个定点分属的集合合并遍历完所有边后,原点上所有结点属于同一个集合,则被选取的边和结点构成最小生成树,否则原图不连通,最小生成树不存在。T1还是畅通工程时间限制:1 ...原创 2019-08-23 19:32:53 · 198 阅读 · 0 评论 -
第十八天:并查集应用
T1畅通工程时间限制:1 秒内存限制:128 兆特殊判题:否题目描述: 某省调查城镇交通状况, 得到现有城镇道路统计表, 表中列出了每条道路直 接连通的城镇。 省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可) 。问最少还需要建设多少条道路? 输入: 测试输入包含若干测试用例。 每个测试用例的第 1 行给出两个正整数,...原创 2019-08-22 18:14:33 · 182 阅读 · 0 评论 -
第十七天:图与并查集的简单构建思路
1. 图标准模板库(STL)中的标准模板 std::vector ,了解 vector 在实现邻接链表中的应用struct Edge{ int next Node;//下一节点编号 int cost;//边权重};//用vector模拟单链表,来保存与其相邻的边权值和结点的信息vector<Edge> edge[N];#include <vector>...原创 2019-08-21 16:20:16 · 143 阅读 · 0 评论 -
第三天:出现次数最多的整数
问题描述编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。 输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。 输出格式:输出只...原创 2019-08-07 11:53:27 · 130 阅读 · 0 评论 -
第四天:字符统计
问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。输入格式 第一行一个数字L。 第二行是字符串S。 L大于0,且不超过S的长度。输出格式 一行,题目要求的字符串。输入样例1: 4 bbaabbaaaaa输出样例1: bbaa输入样...原创 2019-08-08 11:28:10 · 377 阅读 · 0 评论 -
第五天:成绩排序+快速排序
一、成绩排序题目描述:有 N 个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序, 如果姓名的字母序也相同则按照学生的年龄排序, 并输出 N 个学生排序后的信息。输入:测试数据有多组,每组输入第一行有一个整数 N(N<=1000) ,接下来的 N 行包括 N 个学生的数据。 每个学生的数据包括姓名 (长度不超过 100 的字符串) 、年龄(整形数) 、成绩(...原创 2019-08-09 17:43:09 · 621 阅读 · 0 评论 -
第六天:日期类题目
T1日期差值时间限制:1 秒内存限制:32 兆特殊判题:否题目描述: 有两个日期, 求两个日期之间的天数, 如果两个日期是连续的我们规定他们之间的天数为两天输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为 YYYYMMDD输出: 每组数据输出一行,即日期差值样例输入: 20110412 20110422样例输出: 11T2Day of week时间限制:1 秒...原创 2019-08-11 11:22:24 · 118 阅读 · 0 评论 -
第八天:排版问题
T1 输出梯形时间限制:1 秒内存限制:32 兆特殊判题:否题目描述: 输入一个高度 h,输出一个高为 h,上底边为 h 的梯形。输入: 一个整数 h(1<=h<=1000)。输出: h 所对应的梯形。样例输入:4样例输出: **** ****** ******************//// main.cpp// Print...原创 2019-08-12 21:23:33 · 153 阅读 · 0 评论 -
第九天(1):简单查找问题
T1找 x时间限制:1 秒内存限制:32 兆特殊判题:否题目描述: 输入一个数 n,然后输入 n 个数值各不相同,再输入一个值 x,输出这个值在这个数组中的下标(从 0 开始,若不在数组中则输出-1) 。输入: 测试数据有多组,输入 n(1<=n<=200),接着输入 n 个数,然后输入 x。输出: 对于每组输入,请输出结果。样例输入:21 30样例输出: -1...原创 2019-08-13 20:41:38 · 129 阅读 · 0 评论 -
第九天(2):贪心算法
T1FatMouse’ Trade时间限制:1 秒内存限制:128 兆特殊判题:否题目描述: FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.The warehouse h...原创 2019-08-13 21:36:20 · 183 阅读 · 0 评论 -
第十三天:Huffman树 + 二叉树
T 1哈夫曼树时间限制:1 秒内存限制:32 兆特殊判题:否题目描述: 哈夫曼树,第一行输入一个数 n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即 weight,题目需要输出所有结点的值与权值的乘积之和。输入: 输入有多组数据。每组第一行输入一个数 n,接着输入 n 个叶节点(叶节点权值不超过 100, 2<=n<=1000)...原创 2019-08-17 21:00:11 · 62 阅读 · 0 评论 -
第十四天(1):二叉排序树+二叉搜索树
T1二叉排序树时间限制:1 秒内存限制:32 兆特殊判题:否题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入: 输入第一行包括一个整数 n(1<=n<=100)。接下来的一行包括 n 个整数。输出: 可能有多组测试数据, 对于每组数据, 将题目所给数据建立一个二叉排序树, 并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一...原创 2019-08-18 11:35:24 · 87 阅读 · 0 评论 -
第十五天(1):最大公约数GCD(欧几里得算法)
1. 定理证明证明:a, b 的最大公约数,同时也是 b, a mod b 的最大公约数若 g 为 a, b(不同时为0)的公约数,则 g 满足:a=g∗l a = g * l a=g∗lb=g∗m b = g * m b=g∗m其中l, m为整数。a和b又可表示为下式:a=b∗k+r a = b * k + r a=b∗k+r变形后得到:g∗l=g∗m∗k+r g * l = ...原创 2019-08-19 10:28:16 · 115 阅读 · 0 评论 -
第十五天(2):最小公倍数(LCM)
最小公倍数(Least Common Multiple):求 a, b 的最小公倍数,即求最小正整数, 使得 cMODa=0c MOD a = 0cMODa=0, cMODb=0c MOD b = 0cMODb=0 ,a, b两数的最小公倍数为两数的乘积除以他们的最大公约数T最小公倍数描述: 给定两个正整数,计算这两个数的最小公倍数。输入: 输入包含多组测试数据,每组只有一行,包括两个...原创 2019-08-19 11:04:52 · 196 阅读 · 0 评论 -
第十五天(3):素数筛法+分解素因数+整除问题
素数:只能被自身和1整除的大于1的正整数T1素数判定时间限制:1 秒内存限制:32 兆特殊判题:否 :题目描述:给定一个数 n,要求判断其是否为素数(0,1,负数都是非素数) 。输入: 测试数据有多组,每组输入一个数 n。输出: 对于每组输入,若是素数则输出 yes,否则输入 no。样例输入:13样例输出:yes//// main.cpp// Prime_jud...原创 2019-08-19 17:39:46 · 217 阅读 · 0 评论 -
第十六天(1)二分求幂
人见人爱 A ^ B内存限制:128 兆特殊判题:否时间限制:1 秒题目描述: 求 ABA^BAB 的最后三位数表示的整数。输入: 输入数据包含多个测试实例,每个实例占一行,由两个正整数 A 和 B 组成(1<=A,B<=10000 ) ,如果 A=0, B=0,则表示输入数据的结束,不做处理。:输出:对于每个测试实例,请输出 A^B 的最后三位表示的整数,每个输出占一行...原创 2019-08-20 10:01:15 · 99 阅读 · 0 评论 -
第十六天(2):高精度整数+高精度乘法+高精度进制转换
T1a + b时间限制:1 秒内存限制:32 兆特殊判题:否题目描述: 实现一个加法器,使其能够输出 a+b 的值。输入: 输入包括两个数 a 和 b,其中 a 和 b 的位数不超过 1000 位。输出可能有多组测试数据,对于每组数据,输出 a+b 的值。样例输入:2 610000000000000000000 10000000000000000000000000000000...原创 2019-08-20 13:25:45 · 190 阅读 · 0 评论 -
第三十二天(1):面试算法题
用两个栈实现队列template <typename T> class CQueue{public: CQueue(void); ~CQueue(void); void appendTail(const T& node); T deleteHead();private: stack<T> stack1; stack<T> stack...原创 2019-09-19 16:23:49 · 329 阅读 · 0 评论