- 博客(10)
- 收藏
- 关注
原创 基础算法:递归
递归一定需要终止条件,即满足条件后就不再递归了,这也就和循环一样,当满足循环的终止条件就不在继续循环了,否则程序就是一个死循环。问题具有多过程重复性,且每个过程处理方式相同或相似,仅仅是问题的规模大小不同(递归等同于更为复杂的循环)。:当函数的定义功能实现中,其内部操作又直接或间接地出现对自身的调用,则称这样子的程序嵌套定义为递归定义。3.递归函数内部循环递归调用,是多次递归调用,且每次调用结束,返回到当前循环的位置。:每次问题的求解方式是一样的,只是在尝试将一个问题化简到更小的规模。
2024-04-05 11:43:18
348
1
原创 二分与二分答案
整个二分答案题目共有两个过程,一是答案二分枚举答案过程;针对有些问题的答案成单调性(比如最优值等),我们可以考虑用二分实现。它利用二分答案(即已知答案)的特点,把求解性问题变成判定性问题(即判断答案是否可行)。关键难点:二分答案题目的关键和难点在于对答案的验证是否可行,二分验证往往与我们学过的若干基础算法相结合使用,比如。使用二分的前提:元素序列成单调性(即有序),为满足单调性,常常和排序相结合。二分的时间效率:log(n)(对数) 二分法实现方式:用循环或者递归实现,推荐用循环。(最大值尽可能的小),
2024-02-16 21:16:58
261
1
原创 信奥一本通 2016:【例4.1】for循环求和
计算输出1+2+3+...+n的和。对于100%的数据,1≤n≤100。【代码】(不说算法了)
2024-01-13 14:38:29
615
1
原创 信奥一本通 1151:素数个数
2.要想让不能有因数,就必须用“for”循环将这个数以次除以2─n-1,如果都有余数,那么就是素数。素数也叫质数,指大于1的自然数中,除了1和它本身外不再有其他因数的自然数。编程求2∼n(n为大于22的正整数)中有多少个素数。,比如2、3、5、7、11、13。输入n(2≤n≤50000)。
2024-01-13 14:21:47
686
1
原创 洛谷 P1147 连续自然数和
每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M。包含一个整数的单独一行给出M的值(10
2024-01-06 15:36:55
395
1
原创 洛谷 B3612【深进1.例1】求区间和
给定 n 个正整数组成的数列 a1, a2, ⋯,an 和 m 个区间 [li,ri],分别求这 m 个区间的区间和。接下来 m 行,每行为两个正整数 li,ri ,满足 1 ≤ li ≤ ri ≤ n。样例解释:第 1 到第 4 个数加起来和为 10。对于 100% 的数据:1 ≤ n, m ≤ 10^5,1 ≤ ai ≤ 10^4。对于所有测试数据,n, m ≤ 10^5, ai ≤ 10^4。第二行,为 n 个正整数 a1, a2, ⋯, an。第三行,为一个正整数 m。
2024-01-06 14:43:29
793
1
原创 信奥一本通 1232:Crossing River
输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间。几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间。2.如果剩下的人数大于3,我们就有两种过河方案可供选择。3.如果最后还剩两人,则一起过河,sum+=s[2];第一种:S1+S1+Sn+Sn-1。如果还剩下三人,则S1+S2+S3的方法过河。输出t行数据,每行1个数,表示每组过河最少时间。第二种:S1+2*S2+S3。我们要选择时间较少的方案,累加到sum。
2023-12-29 17:18:14
644
1
原创 信奥一本通 1094:与7无关的数
一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数。现求所有小于等于n(n
2023-12-29 14:42:55
1170
1
原创 信奥一本通 1158:求1+2+3+...
2.首先,我们要定义函数f(x)为1+2+3+...+x。1.递归函数分成了两个部分,递归出口和递归公式。这道题的递归公式是:f(x)=f(x-1)+x,那我们就可以通过递归出口和递归公式写出代码。用递归的方法求1+2+3+……递归出口:x==1时,f(x)=1。
2023-12-23 15:17:22
766
1
原创 信奥一本通 1227:Ride to Office
但是,他有个习惯,沿途需要有人陪伴,即以相同的速度,与另外一个人一起骑。先给定所有与Charley同路的人各自的速度与出发时间,问Charley以这种方式跟人,骑完45004500米需要多少时间。输入若干组数据,每组数据第一行n(1≤n≤10000)(1≤10000),n为0,表示输入结束,接着输入n行数据,每行2个数据,表示速度v和出发时间t,如果t
2023-12-23 14:49:49
618
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人