程序设计方法与实践
文章平均质量分 71
乐学编程学习日志
用户名不以数字开头
这个作者很懒,什么都没留下…
展开
-
1. 命名规范
家有家法,行有行规。在家有家的规矩,入行有行的规矩。我们计算机一行就有一个命名的规矩,不同的团体有不一样的命名规范,我们也有我们自己的命名规范。请编写一个程序将一个按照C++命名规范的变量或函数转换为驼峰命名法或帕斯卡命名法对应名称。C++ 命名规范中所有字母均为小写,以下划线确定分词。例如:java_programming_language。驼峰式命名规范将标识符中所有的单词的首字母大写、其余字母小写后拼接在一起。例如:JavaProgrammingLanguage,可用于函数、方法的命名。原创 2023-03-03 20:02:18 · 1118 阅读 · 0 评论 -
2. 土豪金
现在有两种金条,每种都有无限多个,一种是长宽高为的金条,价值元;另一种是长宽高为的金条,价值元。助教找到了一个装金条的箱子,箱子的长宽高为。现在想叫你装价值最高的金条进去,如果你装对了,他会给你1.5分的期末成绩。输入描述输入共一行三个整数,表示箱子的长宽高。输出描述输出一个数,表示箱子中金条的总价值的最大值。原创 2023-03-05 16:32:46 · 81 阅读 · 0 评论 -
3. 杨辉三角
杨辉三角,是在三角形中的一种几何排列。在欧洲,这个表叫做。(1623----1662)是在1654年发现这一的,比要迟393年,比迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。输入描述输入正整数n,表示杨辉三角的行数输出描述根据输入的n,打印对应的杨辉三角为了更美观,每个数字有5位,不足的位用空格补齐,比如1,输出为####1,输出时#为空格111,输出为##111,输出时#为空格5↵。原创 2023-03-05 16:54:54 · 126 阅读 · 0 评论 -
4. 负进制数
我们已经接触过了二进制数,八进制数,十进制数,十六进制数,学会了它们之间的转换,甚至还会其他正进制数的转换,那你听说过负进制数吗?一般来说,任何一个非0整数N(也可以排除1,-1)都有一个对应的N进制数集,每个N进制数都对应一个十进制数,比如-15(十进制)对应110001 (−2进制):^5+1×(−2)^4+0×(−2)^3+0×(−2)^2+0×(−2)^1+1×(−2)^0请设计一个程序,输入一个十进制数和一个负进制数的基数, 并将此十进制数转换为此负进制下的数。原创 2023-03-05 16:55:17 · 240 阅读 · 0 评论 -
5. 郭老师爱猜果子
郭老师家有个果园,每年到了秋收的时候都会收获很多不同种类的果子。郭老师有个癖好,就是每年收完果子后,想从中选出最大和最小的果子。郭老师每次可以比较2个果子的相对大小,但不知道果子的具体大小,即果子的大小用数字表示的话,可以用负数表示,但是相对大小不变,果子的编号也不变,比较方式如下:int cmp(int i, int j)函数返回值说明10-1-2参数不合法。遇到这个时,请即时停止你的程序,你将获得Wrong Answer。原创 2023-03-05 21:25:39 · 159 阅读 · 0 评论 -
6. 找大佬
众所周知,每个专业里都会有一些大佬隐藏在人群里。软件工程专业也是如此。今天的你就像从人群中找到真正的大腿,找到这个大佬。假设现在有名同学(编号为到)在班级里,这里面可能存在大佬。大佬的定义如下:他比其他个人都强其他个人都不比他强我们假设强的关系不一定是绝对的(可能出现我比你强,你也比我强的情况),也不具有传递性(a比b强,b比c强,a不一定比c强),现在给你提供了函数,该函数的参数含义如下:参数说明a询问的第一个人b询问的第二个人返回值说明如下:返回值。原创 2023-03-05 21:26:14 · 120 阅读 · 0 评论 -
7. 拼数
设有 n个正整数a[1]…a[n],将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。输入描述第一行有一个整数,表示数字个数 n (1 ≤ n ≤ 20, 1 ≤ a ≤ 10^9)。第二行有 n个整数,表示给出的 n个整数a[i]输出描述一个正整数,表示最大的整数接下来将由系统输出你的询问记录当你的调用次数小于例程的2倍时,你将AC此题。原创 2023-03-05 21:34:35 · 271 阅读 · 0 评论 -
8. 查找
输入 n(n ≤ 10^6)个不超过 10^9的单调不减的(就是后面的数字不小于前面的数字)非负整数 ,然后进行 m(m ≤ 10^5) 次询问。对于每次询问,给出一个整数 q(q ≤ 10^9),要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 -1。输入描述第一行 2 个整数 n 和 m,表示数字个数和询问次数。第二行 n 个整数,表示这些待查询的数字,有序第三行 m 个整数,表示询问这些数字的编号,从 1 开始编号。输出描述m 个整数表示答案,注意换行。原创 2023-03-05 21:39:56 · 346 阅读 · 0 评论 -
9. 蛮力字符串查找
小林和小红在做一个匹配单词的小游戏,小林给出N个单词和一个字符串T,小红需要在给出的单词里面找出所有以T为前缀的单词,并按字典序进行排序。输入格式输入第一行为正整数 N (1 ≤ N ≤ 1000)接下来 N 行,每行一个单词,长度不超过 100;最后一行包含字符串 T。均为小写字母输出格式按字典序升序输出答案。如果不存在符合条件的单词,则输出 "No Result!"(不包括引号)6↵na↵no↵ki↵ki↵ka↵ku↵k↵ka↵ki↵ki↵ku↵5 ↵a↵b↵。原创 2023-03-05 21:43:10 · 368 阅读 · 0 评论 -
10. 最近最远对
给定平面直角坐标系上的 n 个点,分别求出距离最近的两个点的距离和距离最远的两个点的距离。注意,距离为直线距离。输入格式第一行一个正整数n(2 ≤ n ≤ 10000)。接下来 n行每行两个非负浮点数x[i],y[i],表示第 i个点的 X 坐标与 Y 坐标。输出格式总共一行,两个浮点数,为最短距离与最长距离。误差不超过 0.01 视为正确。原创 2023-03-05 21:44:41 · 184 阅读 · 0 评论 -
11. 水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153水仙花数是3位自幂数。给定区间范围[L , R],求范围内的自幂数(各位数字的n次方之和,n为数字的位数)的个数以及数字。输入格式。原创 2023-03-05 21:50:57 · 633 阅读 · 0 评论 -
12.单词拼接
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、问题描述输入输出二、解题步骤1.难点2.分析3.写代码4.易错分析5.改进一、问题描述单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,没有重合部分则不能拼接,例如beast 和 astonish,如果接成一条龙则变为beastonish。输入输入的第一行原创 2021-10-20 11:18:52 · 220 阅读 · 0 评论 -
12. 单词拼接
单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,没有重合部分则不能拼接,例如beast 和 astonish,如果接成一条龙则变为beastonish。输入格式输入的第一行为一个单独的整数 n表示单词数,以下 n 行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在。原创 2023-03-06 19:13:24 · 264 阅读 · 0 评论 -
13. 郭老师爱合并果子
目录一. 问题描述二. 分析三. 代码1.踩坑2.数组解决方法几个小坑3.堆(1) 复习一. 问题描述郭老师家有个果园,每年到了秋收的时候都会收获很多不同种类的果子。他决定把所有的果子合成一堆,但由于体力有限,郭老师在每次合并的时候只能将两堆果子合并到一起。假设有 堆果子,那么经过 次合并即可完成任务,且消耗的总体力等于每次合并所消耗的体力之和。因为郭老师还需要保留体力将果子运回家,所以在合并果子过程中要尽可能地节省体力。假定每个果子重量均为,并且已知果子的种类数和每种果子的数目,你的任务是原创 2021-10-26 00:47:37 · 254 阅读 · 0 评论 -
13. 郭老师爱合并果子
郭老师家有个果园,每年到了秋收的时候都会收获很多不同种类的果子。他决定把所有的果子合成一堆,但由于体力有限,郭老师在每次合并的时候只能将两堆果子合并到一起。假设有堆果子,那么经过次合并即可完成任务,且消耗的总体力等于每次合并所消耗的体力之和。因为郭老师还需要保留体力将果子运回家,所以在合并果子过程中要尽可能地节省体力。假定每个果子重量均为,并且已知果子的种类数和每种果子的数目,你的任务是设计出合理的合并方案,使郭老师耗费的体力最少。例如有种果子,数目依次为。原创 2023-03-06 19:00:40 · 518 阅读 · 1 评论 -
14. 旅游计划
国庆十天假期,小明打算出去旅游。小明计划了n个景点,编号1至n,并且有m条路连接着景点,小明准备从其中一个景点出发,并且只往西走,直到到达景点k,停止。小明希望只往西走,并且游览的景点尽量多,即选择一个开始景点,制定一条路线以景点k为终点,使得路线上除了第一个景点,每个景点都在路线前一个景点的西面,并且在此条件下游览的景点尽量多。现在,你只知道每一条道路所连接的两个景点的相对位置,但不知道所有景点的具体位置。对于所有的k,都需要你帮小明求一下以城市k为终点最多能游览多少个景点。输入描述第1行为两个正整.原创 2021-10-26 07:57:45 · 556 阅读 · 0 评论 -
15. 约瑟夫问题
1 问题描述约瑟夫斯是公元1世纪的犹太历史学家,他领导了反抗罗马人的武装起义,但是失败了。他和四十名犹太士兵被罗马人围困在一个山洞中。这四十个士兵宁死不屈,决定杀身成仁。但约瑟夫斯不想, 但又不便公开反对,于是提出一个方法,就是四十一个人站成一个圈,从某人开始数起,凡数到三的人就让大家成全他升天,这样下去直到剩下最后一个人,这个人就自杀。大家都没有意见,于是约瑟夫斯就挑选了第31号的位置。结果所有人都死了,剩下他一个活下来投降了罗马人。这也是约瑟夫斯问题的最初提法。但现在我们不想知道最后还在队列的是谁,原创 2021-10-26 23:38:48 · 384 阅读 · 0 评论 -
16. 找数
1 描述给定一个经过升序排序后的数组,以及一个闭区间[a,b]要求按升序输出给定数组在[a,b]区间内的所有数。输入描述第一行为数的个数n第二行为n个按升序给出的数第三行两个数a,b 表示区间[a,b]n范围为[1,1000000]输入数字范围为[1,1000000000]输出描述按升序输出在区间内的数,每行一个数字如果没有数字在区间内,则输出"No Result!" (引号去掉) 测试输入 期待的输出 时间限制 内存限制 额外进程原创 2021-10-27 10:00:07 · 131 阅读 · 0 评论 -
17. 最近对问题
1 问题描述给定平面S上n个点,找其中的一对点,使得在 n(n − 1)/2个点对中, 该点对的距离最小。输入描述第一行为整数n,表示平面上有n个点,至少存在2个点接下来n行,每行两个数,用空格隔开,表示x[i],y[i] n不超过1000000,x,y的绝对值不超过10^5,且为整数没有坐标完全相同的点输出描述一行输出,表示最近点对的距离的平方输入为整数,所以结果也为固定的整数 测试输入 期待的输出 时间限制 内存限制 额外进程原创 2021-10-29 20:21:25 · 344 阅读 · 0 评论 -
18. nth-element
description给定一个长度为 的整数数组。你的程序需要按照输入顺序处理如下两种操作:修改。修改操作带有两个参数 和 ,表示将数组中下标为 的元素修改为 ;查询。查询操作带有三个参数 和 ,表示查询数组中从下标为 的元素开始到下标为 的元素为止(两端均包含)的这个子数组中数值从小到大排第 的整数。输入描述测试用例输入第一行为一个整数 ,表示数组的长度。第二行为 个以空格分隔的整数,表示初始数组的每一项。第三行为一个整数 ,表示操作的数原创 2021-12-01 20:57:53 · 40 阅读 · 0 评论 -
19. 幂次方表示
1 题目描述任何一个正整数都可以用 2的幂次方表示。例如 137=2^7+2^3+2^0。同时约定方次用括号来表示,即 a^b可表示为 a(b)。由此可知,137 可表示为 2(7)+2(3)+2(0)2(7)+2(3)+2(0)进一步:7= 2^2+2+2^0 ( 2^1 用 2表示),并且 3=2+2^0。所以最后 137可表示为 2(2(2)+2+2(0))+2(2+2(0))+2(0)。又如 1315=2^{10} +2^8 +2^5 +2+1所以 1315最后可表示为 2(2(2+2(0))..原创 2021-10-30 08:25:29 · 733 阅读 · 0 评论 -
20. 计算器PLUS
1 问题描述高老师的学术科研开展的如火如荼,但最近有件事让他很烦恼,在做学术研究过程中,经常需要对很大很大的数据进行计算,而现有的计算器没办法满足这种计算需求,所以现在想请大家帮忙实现一个计算器PLUS版。为了减少大家的工作量,高老师已经将函数的输入输出接口定义完成,你只需编写计算器PLUS的核心部分。例如 plus() , minus() 和 multiply() 函数,有三个char * 类型的参数 a、b 和 c,a 和 b 分别是参与运算的两个整数,c 用来存放运算结果。所有数字以.原创 2021-10-31 01:01:23 · 307 阅读 · 0 评论 -
21. Pow(x, n)
description实现Pow(x, n),即输出,由于这个数答案可能很大,如果答案是,,你只需要输出即可。输入描述输入两个整数,在int范围内,保证输入合法有数学意义且答案是整数。输出描述输出的值。 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1以文本方式显示2 3↵以文本方式显示8↵1秒64M0code算法思想:比如 pow(3,9)== 3*pow(3*3,4)原创 2022-04-28 11:40:04 · 102 阅读 · 0 评论 -
22. 解线性方程组
description给定一个线性方程组,对其求解输入描述第一行,一个正整数 n第二至 n+1行,每行 n+1个整数,为a[1],a[2]……a[n],b,代表一组方程输出描述共n行,每行一个整数,第i行为x[i](保留2位小数)如果不存在唯一解,则输出”No Solution” n在区间[1,100]a,b绝对值均在[0,10000] 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1原创 2022-04-28 11:39:19 · 126 阅读 · 0 评论 -
23. 良乡供暖站
description若干年以后,良乡校区已经全部建设完毕。有许多的建筑和道路,它们纵横交错形成一个 的棋盘式网状布局。这个棋盘中的每一个横行和纵行均为一条道路,在某些道路交叉点上具有一栋建筑。每一栋建筑可以由一个二维坐标 表示,表示这一栋建筑处于第 横行、第 纵行的两条道路的交叉点上。现在,良乡要在某一个道路交叉点上(可能已经有建筑)新建立一个供暖站。新的供暖站将修建供热管道到已有的每一栋建筑。为了方便维修,供暖管道只能直接修建在道路之下。为了最小化成本,良乡管理处想要让要修建的管道的原创 2022-04-28 11:38:39 · 158 阅读 · 0 评论 -
24. 招募临时工
description阿布有一片大农田,但是最近长满了杂草,所以他打算招募一批临时工。经估算,除杂草一共分为了n个时间段,其中第i个时间段至少需要a[i]个人。阿布经了解之后获知,一共有m类临时工可以招募,其中第i类可以在第s[i]到t[i]时间段工作,所需费用为f[i]。阿布为了农田的收益,希望用尽可能少的费用除去杂草,但是阿布不擅长找这种方案,于是他找到了你,希望你能给他一种最优的招募方案。输入描述第一行两个整数n,m,表示所需时间段,和可以招募的工人的种类第二行为n个非负整数,表示第i个时间段需要的转载 2021-11-16 18:41:57 · 44 阅读 · 0 评论 -
25. 日期计算
description已知现在是年月日,过了天后,到了年月日。但是你现在只知道,,,和。请你判断一下是不是闰年呢?输入数据为一个二维的List,每一个小List代表一组询问,List从下标为到的值分别代表,,,和。你需要返回一个字符串,按照询问顺序,回答P,R或?,分别代表一定是平年,一定是闰年,无法确定是闰年还是平年。输入格式输入的第一行包括一个整数,代表测试组数。下面行,每行五个整数,依次为,含义如题目所示。之中,保证所组成的是合法的日期,日期的差原创 2021-11-29 21:31:08 · 106 阅读 · 0 评论 -
26. 组合技
description小林和小美现在在进行武道大会决赛,小林现在会很多招术,编号从到,当小林选择编号为的招术的时候,会发生以下的事件:如果是一位数,则直接进入步骤,否则先把按顺序拆成一位一位的形式,如把拆成。对于相邻的两个数,求得他们的差的绝对值,比如求差后会得到。把得到的差的序列中,如果最前面有则舍去,如会变为。如果得到的结果序列中有个数字,则返回步骤继续进行。否则判断这个数字是否为,如果是,那么小林可以发动终极技能:斩杀,以取得武道大会的冠军。现在请你帮帮小林,在小林原创 2021-11-29 23:10:13 · 43 阅读 · 0 评论 -
27. 双塔问题
description从前,有一个古老的帝国有两个形状不同的塔分别在不同的两个城市里。这两个塔是用圆形的砖一块一块建成的。这些圆形砖的高度是一样的,其半径都是整数。很明显,尽管这两个塔形状不同,但造塔所使用的圆形砖却有很多是相同的。过了很多年,一个国王命令他的建筑师们移除两个塔的部分砖以便使它们的形状完全一样,同时使两个塔的高度尽可能的高,并且新塔的砖瓦的排列顺序必须与原来的一样。国王认为这样的两个塔象征着这两个城市之间的和谐和平等,于是命名它们为双胞胎塔。现在,两千年以后,你可以来处理这样非常简单的原创 2021-12-02 23:52:09 · 416 阅读 · 0 评论 -
28. 同心圆
description今天助教在做一道美术题:现在有个圆,均以坐标原点为圆心,半径分别为,然后还有条过圆心的直线,直线怎么画才能让看图的人视觉效果最好?助教很快的回答说:那当然是直接等分圆好呀。就是条线会和每个圆产生个交点,让相邻两个点之间的距离相等呀。于是就有了这样的图片:老师看到这个图片以后觉得很美,想知道一个问题:这些圆和线有很多交点,这些交点两两之间的最短路之和是多少?输入格式输入共一行,包括两个整数,分别表示同心圆的个数和直线的条数。输出格式输出一个浮点数,表示这些圆和线的交点两两之原创 2021-12-03 18:26:54 · 148 阅读 · 0 评论 -
29. 坏巧克力
description两个玩家轮流掰一块格的巧克力,其中一块的小块是坏的。每次掰只能顺着方格的边界,沿直线一掰到底。每掰一次,掰的人把两块中不含坏巧克力的那块吃掉,谁碰到最后那块坏巧克力就算输了。在这个游戏中,先走好还是后走好。输入描述输入第一行包含一个整数,表示数据组数。接下来行,每行包括个整数,表示整块巧克力有行列构成,其中坏的那一块在行列。输出描述对于每组用例,在一行内输出Alice或Bob,分别表示先走好还是后走好。 测试输入 期待的输出原创 2021-12-04 00:17:09 · 182 阅读 · 0 评论 -
30. 小浣熊干脆面
descriptionEureka灰常喜欢吃小浣熊干脆面(五香牛肉味,烤肉味,奇奇怪怪味,意大利红烩味,照烧猪排味,香辣蟹味,海苔味,麻辣香锅味,巧克力味,草莓味,玉米味,炸鸡味,奥尔良烤鸡翅味)。以上只是为了馋一下你 ^_^现在Eureka厌倦了吃干脆面,所以他打算收集齐所有种类的干脆面送给NONO~,但是新一的自动售货机只能买连续的一些干脆面,你能告诉他最少买多少包么?输入第一行两个整数n(1 <= n <= 1000000),表示售货机有连续的n袋干脆面, m(1 <= m原创 2021-12-04 10:18:41 · 493 阅读 · 0 评论 -
31. 同心圆 II
description还记得上一题那个美术题吗,要在圆心处美观的画一些线,使得线和圆的交点可以等分圆。这次难度升级了:在原点处有一个半径为的圆,在圆上有个点,现在我们想随意移动这些点,使得它们最后能做到相邻的两个点之间的距离相同。助教仔细思索了一下……打开了手机微信摇一摇,直接使用魔法把点摇到合适的位置上去了~现在你想知道,这些点总共最少需要移动多少距离,才能使得他们能把圆等分。输入格式输入第一行为一个整数,表示圆上点的个数。输入第二行包含个浮点数,表示每个点与圆心的连线和y轴正半轴之间的夹角原创 2021-12-04 21:40:47 · 70 阅读 · 0 评论 -
插值查找(Interpolation Search)
原文链接:https://zhuanlan.zhihu.com/p/133535431 查字典 当我们从字典中查找 “algorithm” 这个单词的时候,我们肯定不会傻傻地像二分查找一样首先从中间开始。相反,我们会从首字母为 a 的地方开始查找,然后根据第二个字母在字母表.转载 2021-11-18 13:40:47 · 509 阅读 · 0 评论 -
Master—Theorem 主定理的证明和使用
贴一篇文章: Master—Theorem 主定理的证明和使用转载 2021-11-17 07:58:54 · 186 阅读 · 0 评论 -
串匹配 Horspool和Boyer-Moore算法c++实现
Horspool算法算法思想参考的是《算法设计与分析基础 第3版》以全部为大写字母的给定串和模式串为例代码:#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;int list[26]; //和26个字母索引对应int CtoI(char ch){ return ch - 'A';原创 2022-04-28 11:37:57 · 343 阅读 · 0 评论