C语言机试练习
练习C语言编程
一颗向风的蒲公英
这个作者很懒,什么都没留下…
展开
-
C/C++动态规划
比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中序列和最大为18,为子序列(1, 3, 5, 9)的和. 你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)。给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列中所有和为T的“序列和”。求两个字符串最长公共子序列的长度。原创 2023-03-10 10:54:29 · 495 阅读 · 0 评论 -
C/C++最短路径
每组数据的第一行是两个整数n和m(0原创 2023-03-07 09:14:16 · 285 阅读 · 0 评论 -
C/C++图论
每组数据的第一行是两个整数n和m(0路径压缩。实现:依靠森林的结构。原创 2023-03-06 09:43:22 · 144 阅读 · 0 评论 -
C/C++深度优先
问在给的p*q的棋盘上,以象棋中马的行走方式,是否可以不重复的走完整个棋盘。若可以则输出任意一种行走方式,注意要按照字典序的方式输出。不可以就输出“impossible”。给出一堆长度各异的木棍,这些木棍能否头尾相连形成一个正方形?2)参数设计 DFS(当前节点的信息,终点状态)原创 2023-03-05 10:14:00 · 117 阅读 · 0 评论 -
C/C++广度优先搜索
他的起始位置在点N(0原创 2023-03-04 09:43:57 · 178 阅读 · 0 评论 -
C/C++更多map的使用
据说魔法世界有100000种不同的魔咒,波特很难全部记住,但为了对抗强敌,他必须在危机时刻能调用任意一个魔咒,所以他需要你的帮助。其中”魔咒“和”对应功能“分别长度不超过20和80的字符,字符串种保证不包含字符”[“和“]”,且"]"和后面的字符串之间有且仅有一个空格,词典最后一行以”@END@"结束,这一行不属于词典中的词条。每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒,如果魔咒不在字典中,那么输出"what?输入的第一行为N,是学生的个数(N原创 2023-03-03 16:47:21 · 198 阅读 · 0 评论 -
C/C++二叉搜索树
输入:开始一个数n,(1原创 2023-02-28 15:35:15 · 36 阅读 · 0 评论 -
C/C++二叉树
读取字符,非#:根据字符,创建一个TreeNode 对象,把创建的TreeNode对象的左右孩子入队,判断root是否为空,直接让root指向新的TreeNode对象即可,访问队列,得到本次插入的位置,插入读取字符。初始时,TreeNode* root 为NULL,创建一个队列,这个队列用来保存将要插入的位置。读取字符,是#:访问队列,找到本次插入的位置,置为空指针,出队。原创 2023-02-26 10:45:47 · 62 阅读 · 0 评论 -
C/C++指针和引用
如果函数调用完成,会修改参数的内容,使用引用传递。避免方法:delete array[i];int*基类型是int的指针变量。将值传递改为引用传递。原创 2023-02-26 09:42:11 · 42 阅读 · 0 评论 -
C/C++分治
n组成了一棵完全二叉树,我们已知这个二叉树的最后一个结点是n。:这里有一串数列被递归定义,f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2) n>=2。输入数据包括多行,每行给出一组面试数据,包括两个整数m、n(1原创 2023-02-24 09:29:13 · 77 阅读 · 0 评论 -
C/C++递归
约19世纪末,在欧洲商店中出售一种智力玩具:在一块铜板上有三根杆,最左边的杆自上而下、由小到大顺序串这由64个圆盘构成的塔。目的是将最左边杆上的圆盘全部移到右边上的杆上,条件是一次只能移动一个圆盘,并且不允许大圆盘放在小圆盘的上面。现在我们改变这个游戏的玩法:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大圆盘放到小圆盘的上面。现在右N个圆盘,她至少需要多少次移动才能把这些圆盘从最左边移到最右边。:包含多组数据,每次输入一个N值(1原创 2023-02-13 11:47:25 · 120 阅读 · 0 评论 -
C/C++栈
再某个字符串(长度不超过100)中有左括号,右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与它右边且距离最近的右括号匹配,再写一个程序,找到无法匹配的左括号和右括号,输出原来的字符串,并在下一行标出不能匹配的括号,不能匹配的左括号用。输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母;**输出:**对每组输出数据,输出两行,每一行包含原始输入字符,第二行由。采用一个栈,栈中还要记录左括号的位置信息,左括号压栈,右括号弹栈。标注,不能匹配的右括号用“?原创 2023-02-10 11:07:23 · 88 阅读 · 0 评论 -
35复杂链表的复制
函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个。指针指向下一个节点,还有一个。指针指向链表中的任意节点或者。采用复制和拆分的方法。原创 2023-02-10 09:20:50 · 36 阅读 · 0 评论 -
34二叉树中和为某一值的路径
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。用一个数组来保存搜索路径。搜索方向:先左边再右边。原创 2023-02-10 09:08:00 · 38 阅读 · 0 评论 -
33二叉搜索树的后序遍历
根节点是最后遍历,所以可以很快地在这个数组里找到6;因为根节点一定比它的左子树大,比它的右子树小,在数组中找到第一个比它的数q,q左边的元素都是根节点的左子树,右边是根节点的右子树。对每个元素进行上述操作的递归。输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。如果右边存在比“根节点”的值,则这个序列不是二叉搜索树的后序遍历。二叉搜索树的特点:每个节点比它的左子树大,比它的右子树小。原创 2023-02-10 08:57:05 · 37 阅读 · 0 评论 -
32-III从上到下打印二叉树
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。思路几乎与32-II完全相同,只需要设置一个奇偶行的标记即可;原创 2023-02-10 08:35:51 · 42 阅读 · 0 评论 -
C/C++队列
然后下一名小孩再从1报数,报到m时再出去,依次类推,直到所有小孩都从圈中出去,请按出去的先后顺序输出小孩的编号。第一个是n,它代表操作序列的次数,接下来是n行,每行有两个值m和t,分别代表题目中操作的两个元素。若第一个元素为1,则代表有动物进入收容所。第二个元素为动物的编号,正数代表狗,负数代表猫。若出现不合法的操作,即没有可以符合领养要求的动物,则将这次领养操作忽略。第二种为选择收养动物的类型(猫或狗),并收养该种动物最早进入收容所的。第一个时n,第二个是p,第三个是m(0原创 2023-02-09 11:32:44 · 169 阅读 · 0 评论 -
32-II从上到下打印二叉树
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。一开始将头节点放在队列里面;然后进入一个while循环,原创 2023-02-09 10:11:55 · 50 阅读 · 0 评论 -
32-I从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。原创 2023-02-09 09:59:31 · 33 阅读 · 0 评论 -
31.栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。用一个栈来模拟,将pushed序列依次入栈,每次元素pushed[i]入栈后,将其与poped序列的poped[j]比较,如果相等,就将元素出栈;遍历完pushed序列,如果栈为空,则返回true;否则返回false;原创 2023-02-09 08:59:49 · 62 阅读 · 0 评论 -
30、包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。设置两个的栈,一个正常的栈1,栈2保存栈1中的min。原创 2023-02-09 08:45:40 · 35 阅读 · 0 评论 -
C/C++vector
一个数如果恰好等于它的各个因子(该数本身除外)之和,如6=3+2+1,那么称数为“完数”;若因子之和大于该数,则称其为“盈数”。求出2到60之间的所有“完数“和”盈数”。输出2到60之间的所有“完数”和“盈数”,并以下形式输出。E:a1 a2 a3 …G:b1 b2 b3 …size逐渐增大达到capacity。访问 修改 调整 vector。在内存中是顺序存储,线性表。随机位置的插入和删除。原创 2023-02-08 10:39:46 · 61 阅读 · 0 评论 -
29.顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。本题规定:右下左上(rblt)关键点:打印的方向,定义边界。原创 2023-02-08 09:42:33 · 53 阅读 · 0 评论 -
【无标题】
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。f(a,b):a,b是否是互为镜像的二叉树。2、a的左子树和b的右子树是否相等。原创 2023-02-08 09:25:24 · 35 阅读 · 0 评论 -
27.二叉树的镜像
请完成一个函数,输入一个二叉树,该函数输出它的镜像。对整个二叉树的每个节点都交换左右子树。原创 2023-02-08 09:15:44 · 50 阅读 · 0 评论 -
26.树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。B是A的子结构, 即 A中有出现和B相同的结构和节点值。若不成立,则判断B是否是A左/右子树的一个子结构。2、构造函数isssubTree(TA,TB)1、先判断是B是否是A以其根节点的一个子结构。TB是否是以TA为根节点的子树。原创 2023-02-08 09:06:49 · 32 阅读 · 0 评论 -
25合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。原创 2023-02-07 10:53:15 · 36 阅读 · 0 评论 -
C/C++字符串
2、如果没有找到,返回string::npos。本身是一个字符数组,'\0’是结束标志。1、如果找到了,匹配内容的起点的下标。原创 2023-02-07 09:40:17 · 46 阅读 · 0 评论 -
C/C++模拟问题(二)
描述:有一条长度为整数L(1原创 2023-02-06 11:33:49 · 133 阅读 · 0 评论 -
1.2C/C++模拟问题一
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0定义一个char arr[4][10]下底边长是h+2*(h-1)——>3h-2。描述一个场景——>转变为代码。原创 2023-02-04 12:19:01 · 125 阅读 · 0 评论 -
1.1C/C++枚举问题
设abc是0-9之间的数字,abc,bcc是两个三位数,且有abc+bcc=532,求所有满足条件的abc的值。打印所有不超过256,其平方具有对称性质的数,如2和11就是这样的数,因为2x2=4,11x11=121。请输出所有满足题目条件的a,b,c的值,a,b,c之间用空格隔开,每个输出占一行。输出具有题目要求的性质的数,如果输出的数据不止一组,那么各组之间以回车隔开。输出题目要求的4位数,如果结果有多组,那么每组结果之间可以回车隔开。原创 2023-01-31 10:49:14 · 113 阅读 · 0 评论 -
2查找问题
输入数组长度n输入数组,a[1,2,…,n]输入查找个数m,输入查找数字b 输出YES/NO 查找有则输出YES,否则输出NO。输入有多组数据,每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1原创 2023-01-13 10:33:51 · 54 阅读 · 0 评论 -
C++库函数——sort
输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排序,相同成绩都按先录入者排序在前的规则处理。可能有多组测试数据,对于每组数据,输出排序后的n个整数,每个数后面都有一个空格。输入的第一行包括一个整数n(1原创 2023-01-12 11:50:10 · 293 阅读 · 0 评论