![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程练习
不要秃头、
这个作者很懒,什么都没留下…
展开
-
Python基础|W3school学习笔记
python基础学习笔记原创 2023-01-13 00:13:07 · 881 阅读 · 2 评论 -
算法|动态规划
递推求解n阶楼梯上楼问题|华中科大考研复试描述N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)输入描述:输入包括一个整数N,(1<=N<90)。输出描述:可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数。#include<iostream>#include<cstdio>using namespace std;const int MAXN=91;long long dp[MAXN];int原创 2021-08-03 22:44:56 · 136 阅读 · 0 评论 -
数据结构|拓扑排序
拓扑排序限定:有向无环图①从DAG图中选择入度为0的顶点,并输出②从图中删除该入度为0的顶点以及所有以它为起点的边③重复①和②直到当前图为空,或者图不存在入度为0的顶点。前者输出的序列就是拓扑序列,后者说明图中有环,不存在拓扑序列典型例题判断能否构成有向无环图#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;co原创 2021-08-01 21:26:33 · 120 阅读 · 0 评论 -
数据结构|最短路径
畅通工程续Problem Description某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。Input本题目包含多组数据,请处理到文件结束。每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目。原创 2021-08-01 16:35:42 · 496 阅读 · 0 评论 -
数据结构|并查集
畅通工程|浙大考研复试描述某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?输入描述:测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。原创 2021-07-30 15:28:53 · 255 阅读 · 0 评论 -
数据结构|映射
查找学生信息|清华考研复试描述输入N个学生的信息,然后进行查询。输入描述:输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 19 然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下: 02 03 01 04输出描述:输出M行,每行包括一个对应于查询的学生的信息。 如果没有对应的学生信息,则输出“No Answer!原创 2021-07-28 19:16:13 · 234 阅读 · 0 评论 -
数据结构|优先队列
只能访问队列中优先级最高的元素< queue >头文件 priority_queue< typename > name优先队列的应用:求解顺序问题重载!bool operator< (typename x) const{ return …};应用1:解决顺序问题例题:北邮考研复试|复数集合描述一个复数(x+iy)集合,两种操作作用在该集合上: 1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的原创 2021-07-27 11:42:35 · 108 阅读 · 0 评论 -
数据结构|二叉树
二叉树遍历1描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入描述:输入包括1行字符串,长度不超过100。输出描述:可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。 每个输出结果占一行。#include<iostream&原创 2021-07-27 10:06:06 · 214 阅读 · 0 评论 -
深度优先算法
A Knight’s JourneyBackgroundThe knight is getting bored of seeing the same black and white squares again and again and has decided to make a journeyaround the world. Whenever a knight moves, it is two squares in one direction and one square perpendicula原创 2021-07-26 19:51:24 · 258 阅读 · 0 评论 -
宽度优先算法
Catch That Cow农夫知道一头牛的位置,想要抓住它。农夫和牛都于数轴上 ,农夫起始位于点 N(0<=N<=100000) ,牛位于点 K(0<=K<=100000) 。农夫有两种移动方式: 1、从 X移动到 X-1或X+1 ,每次移动花费一分钟 2、从 X移动到 2*X ,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不。最少要花多少时间才能抓住牛?Input一行: 以空格分隔的两个字母: N 和 KOutput一行: 农夫抓住牛需要的最少时间,单位分钟原创 2021-07-24 19:59:00 · 610 阅读 · 0 评论 -
贪心算法|
代理服务器 清华考研复试上机#include<iostream>#include<string>#include<vector>#include<map>using namespace std;map<string,bool> agent;void reset(){//初置 for(auto it=agent.begin();it!=agent.end();it++) (*it).second=true;原创 2021-07-23 22:20:07 · 104 阅读 · 2 评论 -
高精度整数的运算
运算模板#include<string>#include<iostream>#include<string.h>using namespace std;const int MAXN = 10000;struct BigInteger { int digit[MAXN]; int length; BigInteger(); BigInteger(int x); BigInteger(string str);原创 2021-07-18 15:36:37 · 185 阅读 · 0 评论 -
浙大考研复试机试|统计字符
描述统计一个给定字符串中指定的字符出现的次数。输入描述:测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到’#'时输入结束,相应的结果不要输出。输出描述:对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出: c0 n0 c1 n1 c2 n2 … 其中ci是第1行中第i个字符,ni是ci出原创 2021-06-05 20:46:11 · 345 阅读 · 4 评论 -
北大考研复试机试|密码翻译
描述在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,则可得到一个简单的加密字符串。输入描述:读取这一行字符串,每个字符串长度小于80个字符输出描述:对于每组数据,输出每行字符串的加密字符串。示例1输入:Hello! How are you!复制输出:Ifmmp! Ipx bs原创 2021-06-05 20:17:27 · 135 阅读 · 0 评论 -
华中科大复试|找位置
描述对给定的一个字符串,找出有重复的字符,并给出其位置,如:abcaaAB12ab12 输出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。输入描述:输入包括一个由字母和数字组成的字符串,其长度不超过100。输出描述:可能有多组测试数据,对于每组数据, 按照样例输出的格式将字符出现的位置标出。 1、下标从0开始。 2、相同的字母在一行表示出其出现过的位置。示例1输入:abcaaAB12ab12复制输出:a:0,a:3,a:4,a:9b:1,原创 2021-06-05 16:34:52 · 52 阅读 · 0 评论 -
奥运排序问题
描述按要求,给国家进行排名。输入描述:有多组数据。 第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。 第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。 接下来一行给出M个国家号。输出描述:排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终排名 格式为: 排名:排名方式 如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例原创 2021-06-05 15:32:33 · 159 阅读 · 0 评论 -
枚举法|Old Bill
描述Among grandfather’s papers a bill was found. 72 turkeys $679 The first and the last digits of the number that obviously represented the total price of those turkeys are replaced here by blanks (denoted _), for they are faded and are illegible. W原创 2021-05-30 21:30:54 · 86 阅读 · 0 评论 -
codeup|问题 C: 哈夫曼树
题目描述哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。输入输入有多组数据。每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。输出输出权值。样例输入 Copy22 835 11 30样例输出 Copy1062代码#include<bits/stdc++.h>using namespac原创 2021-03-29 21:23:16 · 75 阅读 · 0 评论 -
codeup|问题 A: 算法6-12:自底向上的赫夫曼编码
题目描述在通讯领域,经常需要将需要传送的文字转换成由二进制字符组成的字符串。在实际应用中,由于总是希望被传送的内容总长尽可能的短,如果对每个字符设计长度不等的编码,且让内容中出现次数较多的字符采用尽可能短的编码,则整个内容的总长便可以减少。另外,需要保证任何一个字符的编码都不是另一个字符的编码前缀,这种编码成为前缀编码。而赫夫曼编码就是一种二进制前缀编码,其从叶子到根(自底向上)逆向求出每个字符的算法可以表示如下:在本题中,读入n个字符所对应的权值,生成赫夫曼编码,并依次输出计算出的每一个赫夫曼编码。原创 2021-03-29 14:36:02 · 989 阅读 · 0 评论 -
codeup|问题 B: 序列合并
题目描述有两个长度都为N的序列A和B,在A和B中各取一个数相加可以得到N2个和,求这N2个和中最小的N个。输入第一行一个正整数N(1 <= N <= 100000)。第二行N个整数Ai,满足Ai <= Ai+1且Ai <= 109第三行N个整数Bi,满足Bi <= Bi+1且Bi <= 109输出输出仅有一行,包含N个整数,从小到大输出这N个最小的和,相邻数字之间用空格隔开。样例输入 Copy32 6 61 4 8样例输出 Copy3 6 7提原创 2021-03-28 17:55:21 · 201 阅读 · 0 评论 -
codeup|问题 A: 算法10-10,10-11:堆排序
题目描述堆排序是一种利用堆结构进行排序的方法,它只需要一个记录大小的辅助空间,每个待排序的记录仅需要占用一个存储空间。首先建立小根堆或大根堆,然后通过利用堆的性质即堆顶的元素是最小或最大值,从而依次得出每一个元素的位置。堆排序的算法可以描述如下:在本题中,读入一串整数,将其使用以上描述的堆排序的方法从小到大排序,并输出。输入输入的第一行包含1个正整数n,表示共有n个整数需要参与排序。其中n不超过100000。第二行包含n个用空格隔开的正整数,表示n个需要排序的整数。输出只有1行,包含n个整原创 2021-03-28 15:30:56 · 193 阅读 · 0 评论 -
codeup|问题 A: 二叉排序树
题目描述输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。输出可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。样例输入 Copy1228 15421 10 5 39样例输出 Copy2228 158 1515 821 10 5 395 10 21 395原创 2021-03-27 11:44:42 · 86 阅读 · 0 评论 -
PAT|二叉搜索树&镜像二叉树
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node’s key.The right subtree of a node contains only nodes with keys greater than原创 2021-03-26 21:02:56 · 172 阅读 · 0 评论 -
codeup|问题 B: 二叉树
题目描述如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。输入输入数据包括多行,每行给出一组测试数据,包括两个整数m,n (1 <= m <= n <= 1000000000)。最后一组测试数据中包括两个0,表示输入原创 2021-03-25 19:09:57 · 219 阅读 · 0 评论 -
codeup|问题 A: 复原二叉树
题目描述小明在做数据结构的作业,其中一题是给你一棵二叉树的前序遍历和中序遍历结果,要求你写出这棵二叉树的后序遍历结果。输入输入包含多组测试数据。每组输入包含两个字符串,分别表示二叉树的前序遍历和中序遍历结果。每个字符串由不重复的大写字母组成。输出对于每组输入,输出对应的二叉树的后续遍历结果。样例输入 CopyDBACEGF ABCDEFGBCAD CBAD样例输出 CopyACBFGEDCDAB代码#include<stdio.h>#include<string原创 2021-03-25 16:24:28 · 143 阅读 · 0 评论 -
二叉树的操作&&重点:几种遍历方式
题目:已知一棵二叉树的后序遍历和中序遍历序列,求这棵二叉树的层序遍历序列。#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;const int maxn = 50;struct node { int data; node *lchild; node *rchild;};int pre[原创 2021-03-24 21:41:01 · 54 阅读 · 0 评论 -
codeup|问题 C: 【宽搜入门】8数码难题
题目描述初始状态的步数就算1,哈哈输入:第一个33的矩阵是原始状态,第二个33的矩阵是目标状态。输出:移动所用最少的步数Input2 8 31 6 47 0 51 2 38 0 47 6 5Output6代码#include<iostream>#include<queue>using namespace std;struct node { int x, y; int step; int M[3][3]; int l原创 2021-03-23 16:05:48 · 80 阅读 · 0 评论 -
codeup|问题 B: DFS or BFS?
题目描述说好了,题目不黑人。给你一个8*8的矩阵,你的初始位置是左下角方格(用’U’表示),你的目标位置是右上角的方格(用’A’表示),其余的62个方格,如果是’.’,表示这个方格为空,如果是’S’,表示这个方格有一块大石头。好了现在你开始从左下角出发,每次可以往上,下,左,右,左上,右上,左下,右下移动一个方格,或者你可以原地不动,一共九个动作方式,在你做完一个动作后,所有的大石头会往下掉一个方格(如果一个大石头的位置是(x,y),那下一秒是(x+1,y),不过如果它已经在最下面的一排了,那它就会掉出原创 2021-03-22 17:25:39 · 98 阅读 · 0 评论 -
codeup|迷宫步数问题
给定一个nm大小的迷宫,其中代表不可通过的墙壁,而“.”代表平地,S表示起点,T代表终点。移动过程中,如果当前位置为(x,y)(下标从0开始), 且每次只能前往上下左右四个位置的平地,求从起点S到达终点T的最少步数。代码#include<stdio.h>#include<string.h>#include<queue>using namespace std;const int maxn = 100;struct node { int x, y;//原创 2021-03-21 21:22:46 · 130 阅读 · 0 评论 -
codeup|迷宫求块问题
题目描述:给出一个m*n的矩阵,矩阵中的元素为0或1.称位置(x,y)与其上下左右四个位置是相邻的。如果矩阵中有若干个1相邻,则称这些1构成了一个块。求给定矩阵中的块数。输入:0 1 1 1 0 0 10 0 1 0 0 0 00 0 0 0 1 0 00 0 0 1 1 1 01 1 1 0 1 0 01 1 1 1 0 0 0输出:4代码#include<stdio.h>#include<queue>using namespace std;const原创 2021-03-21 20:57:13 · 140 阅读 · 0 评论 -
codeup|问题 B: 【递归入门】组合的输出
题目描述排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r < = n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。现要求你不用递归的方法输出所有组合。例如n = 5 ,r = 3 ,所有组合为:1 2 31 2 41 2 51 3 41 3 51 4 52 3 42 3 52 4 53 4 5输入一行两个自然数n、r ( 1 < n < 21,1 < = r < = n )。输出所有的组合原创 2021-03-21 17:04:50 · 191 阅读 · 1 评论 -
codeup|问题 A: 【递归入门】全排列
题目描述排列与组合是常用的数学方法。先给一个正整数 ( 1 < = n < = 10 )例如n=3,所有组合,并且按字典序输出:1 2 31 3 22 1 32 3 13 1 23 2 1输入输入一个整数n( 1<=n<=10)输出输出所有全排列每个全排列一行,相邻两个数用空格隔开(最后一个数后面没有空格)样例输入 Copy3样例输出 Copy1 2 31 3 22 1 32 3 13 1 23 2 1代码#include<s原创 2021-03-21 16:19:25 · 94 阅读 · 0 评论 -
背包问题与DFS
一定容量求最大价值的问题:#include<stdio.h>const int maxn = 30;int n, V, maxValue = 0;//n:物品件数;V:背包容量;maxValue:最大价值int w[maxn], c[maxn];//w[i]为每件物品的重量,c[i]为每件物品的价值void DFS(int index, int sumW, int sumC) { if (index == n) {//已经完成对n件物品的选择,即进入死胡同原创 2021-03-21 15:32:56 · 145 阅读 · 0 评论 -
codeup|问题 E: 算法2-24 单链表反转
题目描述根据一个整数序列构造一个单链表,然后将其反转。例如:原单链表为 2 3 4 5 ,反转之后为5 4 3 2输入输入包括多组测试数据,每组测试数据占一行,第一个为大于等于0的整数n,表示该单链表的长度,后面跟着n个整数,表示链表的每一个元素。整数之间用空格隔开输出针对每组测试数据,输出包括两行,分别是反转前和反转后的链表元素,用空格隔开如果链表为空,则只输出一行,list is empty样例输入 Copy5 1 2 3 4 50样例输出 Copy1 2 3 4 55 4 3原创 2021-03-21 14:35:13 · 190 阅读 · 0 评论 -
codeup|链表合并|问题 C: 最快合并链表(线性表)
题目描述知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据结点个数。要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。输入m=53 6 1 3 5n=4.7 10 8 4输出3 6 1 3 5 7 10 8 4样例输入 Copy73 5 1 3 4 6 055 4 8 9 5样例输出 Copy3 5 1 3 4 6 0 5 4 8 9 5代码#include <iostream>#include <cstdio>原创 2021-03-21 12:10:32 · 173 阅读 · 0 评论 -
codeup|静态链表|问题 B: C语言-链表排序
题目描述已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。输入第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成输出按照学号升序排列的数据样例输入 Copy2 35 1006 893 824 952 10样例输出 Copy2 103 824 955 1006 89代码#include<stdio.h>#include<algorithm原创 2021-03-21 11:49:00 · 107 阅读 · 0 评论 -
codeup|模拟加减乘除|问题 A: 简单计算器
题目描述读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。输入测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。输出对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。样例输入 Copy30 / 90 - 26 + 97 - 5 - 6 - 13 / 88 * 6 + 51 / 29 + 79 * 87 + 57 * 920样例输出 Copy原创 2021-03-18 13:48:49 · 255 阅读 · 0 评论 -
codeup|优先队列|问题 A: 任务调度
题目描述读入任务调度序列,输出n个任务适合的一种调度方式。输入输入包含多组测试数据。每组第一行输入一个整数n(n<100000),表示有n个任务。接下来n行,每行第一个表示前序任务,括号中的任务为若干个后序任务,表示只有在前序任务完成的情况下,后序任务才能开始。若后序为NULL则表示无后继任务。输出输出调度方式,输出如果有多种适合的调度方式,请输出字典序最小的一种。样例输入 Copy4Task0(Task1,Task2)Task1(Task3)Task2(NULL)Task3原创 2021-03-18 11:32:30 · 149 阅读 · 0 评论 -
codeup|句子最高词频计数|问题 A: Speech Patterns (25)
题目描述People often have a preference among synonyms of the same word. For example, some may prefer “the police”, while others may prefer “the cops”. Analyzing such patterns can help to narrow down a speaker’s identity, which is useful when validating, for e原创 2021-03-17 12:16:46 · 74 阅读 · 0 评论 -
codeup|1060 Are They Equal (25 point(s))
If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered equal since they are both saved as 0.123×105 with simple chopping. Now given the number of significant digits on a machine and two float numbers, you are原创 2021-03-15 20:59:54 · 79 阅读 · 0 评论