- 博客(64)
- 收藏
- 关注
原创 04-树4 是否同一棵二叉搜索树 (25 分)
04-树4 是否同一棵二叉搜索树 (25 分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最
2021-05-27 23:24:55
334
2
原创 习题6-7 简单计算器 (20 分)
题目习题6-7 简单计算器 (20 分)模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。输入格式:输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。输出格式:在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。输入样例:1+2*10-10/2=输出样例:10代码:#include<stdio.h>#include
2021-05-22 00:16:30
519
原创 03-树3 Tree Traversals Again (25 分)
题目题目背景An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); push(2); push(3); pop
2021-05-20 22:51:17
277
2
原创 03-树2 List Leaves (25 分)
题目题目背景:Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives a positive integer N (≤10) which is the total numbe
2021-05-20 13:22:06
175
2
原创 习题4-11 兔子繁衍问题 (15 分)
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?输入格式:输入在一行中给出一个不超过10000的正整数N。输出格式:在一行中输出兔子总数达到N最少需要的月数。输入样例:30输出样例:9解题思路:兔子的总数是上个月+ 上上个月的和#include<stdio.h>#include<stdlib.h>/*
2021-05-16 23:28:01
235
原创 习题4-10 猴子吃桃问题 (15 分)
题目一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?输入格式:输入在一行中给出正整数N(1<N≤10)。输出格式:在一行中输出第一天共摘了多少个桃子。输入样例:3输出样例:10解题思路:我们知道了 当第N天 时候就发现只剩1个 那么N-1天的时间把N个桃子吃剩了一个我们根据天数反推桃子的数量x
2021-05-13 20:22:46
362
原创 习题4-9 打印菱形图案 (15 分)
题目解题思路:假设 x是菱形中间的那一层 x = n/2 +1;每一层左边的空格个数与他在层数和 x层有联系设 当层数 i=1; x=4 从左到右 需要输出 x-i * 2个空格 这样能恰好到指定位置输出一直对 第x层 把x层输出完后 就到 x-1层这时候处理完了 从上至下 第一层-x层我们接下来处理下半部分使i=1 i<x; i++ 次循环;在通过每层 用i*2在-1 使其层数从x-1 到0;代码#include<stdio.h>#include<
2021-05-13 20:04:02
250
原创 习题4-8 高空坠球 (20 分)
题目习题4-8 高空坠球 (20 分)皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输入格式:输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。输出格式:在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。题目保证计算结果不超过双精度范围。输入样例:33 5输出样例:94.9 1.0解题思路:题目求得
2021-05-11 17:57:49
600
原创 03-树1 树的同构 (25 分)
题目输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。如果孩子结点为空,则在相应位置上给出“-”。给出的数据间用一个空格分隔。注意:题目保证每个结点中存储的字母是不同的。输出格式:如果两棵树是同构的,输出“Yes”,否则输出“No”。解题思路:这题是根据小白讲解 来做的 最判断树是否同构还
2021-05-07 21:04:23
107
原创 习题4-7 最大公约数和最小公倍数 (15 分)
题目输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。输入样例:511 292输出样例:73 2044思路:根据欧几里得算法 我们得知a b 两树之间的最大公因数通过最大公因数我们能求出 最小公倍数公式 result = a*b / 最大公因数代码#include<stdio.h>#include<stdlib.h>int gcd(int a, int b)
2021-05-07 20:58:12
216
原创 习题4-6 水仙花数 (20 分)
题目输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。输入样例:3输出样例:153370371407解题思路:IPO模型1.输入(Input)2.处理(Process)3.输出(Out)求N的位数根据N 我们假设位数, 例如 N == 3 我们从100求999中的水仙花数如果 N == 4 我们从1000-9999 中 求水仙花数锁定N的位数 从中求水仙花数, 假设 temp = 100 ,我们利
2021-05-05 17:46:50
518
原创 习题4-5 换硬币 (20 分)
题目将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。输入样例:13输出样例:fen5:2, fen2:1, fen1:1, total:4fen5
2021-05-03 13:19:37
471
3
原创 习题4-4 特殊a串数列求和 (20 分)
题目题目格式:解题思路:当n = 1 a = 2 注意 result = a当n = 2 a = 22 result = a * 10 + result当n = 3 a = 222 result = a*100 + result也可以换种解题方法当n = 1 a = 2 sum += a result = a当n = 2 a = 22 sum+= result * 10 + a当n = 3 a = 222 sum+= result * 1
2021-05-02 23:51:33
248
原创 习题4-3 求分数序列前N项和 (15 分)
题目#include<stdio.h>#include<stdlib.h>//习题4-3 求分数序列前N项和 (15 分) //https://pintia.cn/problem-sets/12/problems/289// 本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。// 注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。double calculateN();int main(){ do
2021-05-02 11:50:40
604
2
原创 习题4-2 求幂级数展开的部分和 (20 分)
题目本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。输入格式:输入在一行中给出一个实数x∈[0,5]。输出格式:在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。输入样例:20输出样例:32.66解题思路:可以用阶乘函数来求k! 但是每次都需要重新对同一个数求阶乘 不如把上一个数保存 在与k相乘 不就成了K1了吗#include<stdio
2021-05-02 11:15:58
374
原创 习题4-1 求奇数和 (15 分)
题目#include<stdio.h>#include<stdlib.h>// https://pintia.cn/problem-sets/12/problems/287 // 输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。// 在一行中输出正整数序列中奇数的和。// 1. 逐步读入 遇到负数或者0结束 遇到奇数++ 否则什么都不做 读下一个int OddTotal();int main(){ int
2021-04-29 20:40:00
281
原创 练习4-11 统计素数并求和 (20 分)
题目思路设循环 从 n - m i=n 让i循环到m每一次判断i是否是素数 如果不是就返回0 如果是就返回1素数是指除了能被自身和1 整除的数#include<stdio.h>// 统计N - M 区间素数的个数 并且对素数求和int Isit(int n);int main(){ int count = 0 ; // 素数个数 double sum = 0; //素数的和 int n,m; scanf("%d %d",&n
2021-03-26 23:53:54
187
原创 练习4-10 找出最小值 (20 分)
题目从数组[0] 开始从前往后比较 如果大于 就赋值#include<stdio.h>// 找出最小值int main(){ int n ; scanf("%d", &n); int count[n]; for(int i =0 ; i<n; i++) { scanf("%d", &count[i]); } int min = count[0]; for(int i
2021-03-26 23:28:41
198
原创 练习4-7 求e的近似值 (15 分)
题目思路将 1+ 1/1!+1/2!+ … 1/n!分成两个徐怒汉第一个外循环是1+计算好的结果内循环是1/n! 的计算结果代码#include<stdio.h>//求 e的近似值 1+1/!+1/2!+1/3!+....+1/n!int main(){ int n = 0; // n double t = 0; //用来做阶乘 double sum = 1; scanf("%d", &n); for( int i=1; i&
2021-03-26 23:14:20
268
原创 习题3-4 统计学生成绩 (15 分)
题目统计学生成绩代码#include<stdio.h>#include<math.h>#include<string.h>void calculate(int n) ;int main(void){ int n ; scanf("%d",&n); calculate(n); getchar(); getchar(); return 0;}void calculate(int n)
2021-03-14 19:17:38
196
原创 练习4-6 猜数字游戏 (15 分)
题目猜数字游戏代码#include<stdio.h>#include<math.h>#include<string.h>void GuessNumber(int num, int N);int main(void){ int n ,m; scanf("%d %d",&n,&m); GuessNumber(n ,m); getchar(); getchar(); return 0;}vo
2021-03-14 19:04:31
936
2
原创 习题3-3 出租车计价 (15 分)
题目出租车计价#include<stdio.h>#include<math.h>#include<string.h>void calculate(float mile, int time);int main(void){ float m; int time; scanf("%f %d",&m, &time); calculate(m,time); getchar(); getchar();
2021-03-14 16:24:40
472
原创 习题3-2 高速公路超速处罚 (15 分)
题目高速公路超速处罚计算好 超出10%和50%的数值在用车速去比较#include<stdio.h>#include<string.h>#include<stdlib.h>void speed(int sped,int res);int main(){ int a,b; scanf("%d %d",&a ,&b); speed(a,b); getchar(); getchar(); return 0
2021-03-14 15:19:49
300
原创 C语言程序设计 习题3-1 比较大小 (10 分)
题目比较大小#include<stdio.h>#include<stdlib.h>void compare(int a,int b, int c);int main(){ int a, b, c; scanf("%d %d %d", &a, &b, &c); compare(a, b, c); getchar(); getchar(); return 0;}void compare(int a
2021-03-14 14:11:09
976
原创 2020年第十届C/C++ B组第二场蓝桥杯省赛真题 蛇形填数
蓝桥杯真题–蛇形填数题目描述:如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少?#include<stdio.h>#include<stdlib.h>void Process(int *a, int n);#define Max 100int a[Max][Max] = {0};int main(){ int n; printf("请输入维数n\n");
2021-03-01 23:26:12
352
原创 2020年第十届C/C++ B组第二场蓝桥杯省赛真题 第二题:既约分数
题目:既约分数题目描述如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数。例如,3/4,5/2,1/8,7/1都是既约分数。请问,有多少个既约分数,分子和分母都是1到2020之间的整数(包括1和2020)解题思路我们通过辗转相除法(欧几里得算法) 求得最大公约数 在通过判断最大公约数是为1通过枚举来得到答案#include<stdio.h>/* 试题B :既约分数 如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数
2021-02-25 18:47:23
2771
9
原创 2020年第十届C/C++ B组第二场蓝桥杯省赛真题 第一题:门牌制作
门牌制作题目秒速小蓝要为一条街的住户制作门牌号。这条街一共有2020位住户,门牌号从1到2020编号。小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7。请问要制作所有的1到2020号门牌,总共需要多少个字符2?题目思路暴力搜索,通过对每个数字求个位 判断是否==2#include<stdio.h>// 实现 统计从 0-2020 中 有多少个2int main()
2021-02-25 14:31:48
566
6
原创 二叉树--删除二叉搜索树的结点
二叉树搜索树删除(Delete)二叉搜索树上的任意一个节点原理我们将删除结点的情况 分为三种1.NO child被删除节点是叶子结点 因为叶子结点没有孩子 可以直接删除我们只需要将结点释放内存在讲这个空地址 return 回去就好了One child结点只有一个孩子,无论是这个孩子是左孩子 还是右孩子因为只有一个孩子 我们只需要将 root(被删除的结点) = root->child指针root 移动到他自身唯一的孩子去 跳过这个被删除的结点 最后返回root-&
2021-02-23 22:57:00
1356
原创 二叉树--是否是二叉搜索树
二叉搜索树(Binary Search Tree)二叉树搜索树二叉搜索树是基于二分算法分解问题的灵感所研发的一棵树特点根节点比左子树所有结点要大或者等于(root->left).data <= root->data根节点比右子树所有结点小(root->right0.data > root->data递归实现代码#include<stdio.h>#include<stdlib.h>//The code to work tha
2021-02-22 17:02:26
298
原创 二叉树--层次遍历
二叉树二叉树的层次遍历原理队列实现:利用队列的性质先入先出遍历从根节点开始 首先根节点入队列开始循环 结点出队列 访问该节点 将结点的左右子树按 左子树 右子树顺序入队列图完整代码#include<stdio.h>#include<stdlib.h>typedef char ElmentType;typedef struct Tnode{ struct Tnode *Left; struct Tnode *Right; char d
2021-02-19 18:12:59
185
原创 二叉树非递归遍历
二叉树非递归遍历原理在前序遍历中遇到结点就打印,在讲结点放进堆栈当结点为空,将结点弹出堆栈在访问结点的右子树再循环步骤中序遍历中序遍历中遇到结点先保存在堆栈里面当结点空的时候 我们将堆栈抛出结点 在打印结点 在访问结点的右子树循环创建一颗二叉树代码#include<stdio.h>#include<stdlib.h>typedef char ElmentType;typedef struct Tnode{ struct Tnode *
2021-02-10 20:03:21
210
原创 二叉搜索树的建立和搜索
二叉树二叉搜索树的定义二叉树搜索树是基于二叉树和二分算法研究出来的一种特殊结构二叉树的左子树比根节点要小 右子树比根节点要大代码#include<stdio.h>#include<stdlib.h>typedef struct BstNode{ int data; struct BstNode* left; struct BstNode* right;}BstNode;BstNode* Insert(BstNode* root,int
2021-02-09 17:28:58
340
原创 LeetCode -- 二叉树的前序遍历
二叉树题目链接Leetcode题目要求递归代码#include<stdio.h>#include<stdlib.h>struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; int main(){ return 0;}/** * Note: The returned array must be malloce
2021-02-06 22:06:16
144
1
原创 练习4.1 根据后序和中序遍历输出先序遍历 (25 分)
练习4.1 根据后序和中序遍历输出先序遍历 (25 分)本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式:第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式:在一行中输出Preorder: 以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:Pr
2021-02-03 19:01:04
1017
1
原创 汉若塔递归原理
递归递归的定义递归指函数在运行期间,直接或间接的调用自己(就很抽象)递归的用法一般用在处理同一类的问题,除了问题的规模大小外,解题方法和思路是一致的递归的特点先递后归,先把问题分解成规模比原问题小的子问题,分解到不能在分解,得出了结果将最小层结果返回给上一层,层层返回汉若塔问题汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开
2021-02-01 20:57:43
912
2
原创 数据结构-二叉树的建立与遍历
二叉树的遍历在遍历二叉树有四种方法二叉树的遍历原理二叉树的遍历(traversing binary tree)是指从根节点除法,按照某种次序一次访问二叉树中的所有结点使得每个结点被访问一次 , 且仅被访问一次关键词,访问和次序访问:访问其实是要根据实际的需要来确定具体做什么,比如计算,或者输出这里的访问算是一个抽象操作,我们简单的假设访问就是输出结点的数据信息次序:树和线性表的遍历方式不同的,线性表一般是从头到尾,我们限制树的遍历次序,遍历次序是从左至右
2021-01-31 22:20:51
390
原创 数据结构-二叉树的性质
二叉树二叉树的性质性质1:在二叉树的第i层上至多有2i-1个结点(i>=1)这个性质十分好记忆第一层是根节点,只有一个所以是21-1 = 20 = 1第二层有两个 22-1 = 21 = 2第三层有四个 23-1= 22 = 4通过归纳法可得知性质2:深度为k的二叉树至多有2k-1个结点(k>=1)注意是2k-1 不是2k-1深度为k意思就是有k层的二叉树如果有一层 k=1 21 -1 = 1如果有二层 k=2 22 -1 = 3如果有三层 k=3 23
2021-01-31 21:21:08
264
原创 数据结构-树
树树是一种常见的数据结构,是一对多的结构树在查找方面有着巨大的优势树的解释树(Tree)是n(n>=0)个节点的有限集.当n=0时称为空树,在任意一颗非空树种 有以下特点有且仅有一个特定的称为根(Root)的节点当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2…Tn3.其中的每个集合本身又是一棵树,并且成为根的子树(SubTree)树的特别强调指出n>0 时根的节点是唯一的,不可能存在多个根m>0时,字数的个数没有限制,但他们一定
2021-01-29 23:05:19
158
原创 数据结构-二分查找
树树一种一对多的数据结构类型经常用于于社会关系和文字数据方面上社会方面:家谱关系图(树(Tree)) 公司管理层分布图(树(Tree))文字方面:牛津词典(Tree) 计算机操作系统文件管理系统(Tree)为何要使用树? 因为使用树可以更高效率的查找查找有两种静态查找数据是静止的,不会做插入删除,也就是位置是固定的 例如字典动态查找数据不是固定的 会变动 会做插入 删除等操作 例如在职员工登记表顺序结构在顺序结构中使用查找,效率O(n)如何更高效的查找?二分查找(B
2021-01-29 22:26:43
251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅