头歌算法
是啦啦啦呀
这个人只会一丢丢
展开
-
动态规划法 第4关:求最长的单调递增子序列长度
任务描述本关任务:编写用动态规划解决求最长的单调递增子序列长度问题。相关知识为了完成本关任务,你需要掌握:动态规划。编程要求给定一个长度为n的数组,找出一个最长的单调递增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为7的数组A5,6,7,1,2,8,9,则其最长的单调递增子序列为5,6,7,8,9,长度为5。求318714101223411624的最长的单调递增子序列长度。解题思路:设长度为n的数组为(a[0],a[1],a[2],…,a[n−1]),则假定以a[j]结尾的数组序列原创 2022-01-01 23:39:45 · 5104 阅读 · 0 评论 -
动态规划法 第5关:矩阵连乘问题
任务描述本关任务:编写用动态规划解决矩阵连乘问题。相关知识为了完成本关任务,你需要掌握:动态规划。编程要求将矩阵连乘积AiAi+1…Aj简记为A[i:j],其中i<=j。设在矩阵Ak和Ak+1之间将矩阵链断开,则其相应加括号为(AiAi+1…Ak) (Ak+1Ak+2…Aj)。A[i:j]的计算量等于三部分计算量之和:(1)A[i:k]的计算量,(2)A[k+1:j]的计算量,(3)A[i:k]与A[k+1:j]相乘的计算量。设计算A[i:j]所需最少乘积数目为,则原问题的最优值为。原创 2022-01-01 23:39:29 · 4569 阅读 · 3 评论 -
动态规划法 第3关:求序列-2 11 -4 13 -5 -2的最大子段和
任务描述本关任务:编写用动态规划解决最大子段和问题。相关知识为了完成本关任务,你需要掌握:动态规划。编程要求给定由n个整数(可能为负数)组成的序列:a1,a2,……,an, 求该序列的最大子段和。当所有整数均为负数,定义其最大子段和为0。解题思路:定义b[j]=max(a[i]+a[i+1]+…+a[j]),其中1<=i<=j,并且1<=j<=n。那么所求的最大子段和可以表示为max b[j],1<=j<=n。由b[j]的定义可知,当b[j−1]>0原创 2022-01-01 23:39:59 · 4239 阅读 · 0 评论 -
贪心法 第5关:将给定的整数去掉任意个数字后重新组成最小整数
任务描述本关任务:键盘输入一个高精度的正整数 n,去掉其中任意 s 个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的 n 和 s,寻找一种方案使得剩下的数字组成的新数最小。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:231183 //正整数n3 //去掉3(s)个数字预期输出:113#include <b原创 2022-01-01 23:40:22 · 8349 阅读 · 0 评论 -
贪心法 第4关:找到出现次数最多的数
任务描述本关任务:给定 n 个正整数,编写一个实验程序找出它们中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:6 //给定6(n)个正整数10 //此行及以下为具体的每个数据110203020预期输出:出现次数最多的且最小的数为10#include <stdio.h原创 2022-01-01 23:40:32 · 8599 阅读 · 0 评论 -
贪心法 第3关:将真分数用埃及分数之和表示
任务描述本关任务:设计一个算法,把一个真分数 F 表示为埃及分数之和的形式。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,注意需要学生自己获取真分数再进行编程。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:3 5(3为分子,5为分母,真分数为3/5)预期输出:3/5=1/2+1/10#include "stdio.h"void main(){ /********** Begin **原创 2022-01-01 23:40:43 · 7476 阅读 · 0 评论 -
贪心法 第2关:求一个数列的极差
任务描述本关任务:将 n 个正整数作成的一个数列,进行如下操作:每一次删除其中的两个数 a 和 b,然后在数列中加入一个数a×b+1,如此下去直至数列中剩下一个数。在所有按这种操作方式最后得到的数中,最大的记作 max,最小的记作 min,则该数列的极差定义为M=max-min,请你使用贪心算法设计编程输出他们的极差。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务(注意已经为你获取输入数据)。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部原创 2021-12-31 10:32:44 · 9308 阅读 · 1 评论 -
贪心法 第1关:找零钱
任务描述本关任务:设计一个贪婪算法,使得找的钱币张数最少。商店售货员找给 1 个顾客 n 元,用以下七种面值的纸币:100 元,50 元,20 元,10 元,5 元,2 元,1 元。思考:如果商店售货员找给 1 个顾客 140 元,假设钱币的面值有九种:100 元,70 元,50 元,20 元,10 元,7 元,5 元,2 元,1 元。用贪婪算法得到的是该问题的最优解吗?编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,注意需要学生自己获取找的钱 n。#include <s原创 2021-12-31 10:32:13 · 10523 阅读 · 0 评论 -
分治法 第3关:找出数组中第 k 个小的元素
任务描述本关任务:对于给定的 n 个元素的数组a[0:n-1],要求从中找出第 k 小的元素。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,注意需要学生自己获取输入数据再进行操作。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:10 5 //表示给定10(n)个元素的数组,从中找出第5(k)小的元素-34 //此行及以下为具体的每个数据95-50677381-3810-11原创 2021-12-31 10:31:27 · 12133 阅读 · 3 评论 -
分治法 第2关:求一组数据的和
任务描述本关任务:利用分治法求一组数据的和。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,注意需要学生自己获取输入数据再进行操作。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:10 //数据的总个数-5 //此行及以下为具体的每个数据51099100306098-10-1预期输出:分治法求出数组元素的和为:386#include "stdio.h"/*******原创 2021-12-31 10:31:00 · 8306 阅读 · 8 评论 -
分治法 第1关:求一组数据中最大的两个数
任务描述本关任务:利用分治法求一组数据中最大的两个数和最小的两个数。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:10 //数据的总个数1 //此行及以下为具体的每个数据3579108642预期输出:max1=10 max2=9min1=1 min2=2#include <stdio.h>void m原创 2021-12-31 10:30:23 · 11980 阅读 · 4 评论 -
蛮力法 第5关:白帽子红帽子问题
任务描述本关任务:正确输出他们各自所戴帽子的颜色。厅内有 5 个人,他们均戴着帽子,有白帽子和红帽子。已知戴白帽子的说真话,戴红帽子的说假话,请从他们各自提供的线索辨别谁戴白帽子,谁戴红帽子。甲:我看见一个戴白帽子的乙:我没有看见戴红帽子的丙:我看见一个戴白帽子的,但不是甲丁:我没有看见戴白帽子的戊:我的帽子和丙一样编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,要求程序输出结果按甲乙丙丁戊的顺序分别输出他们所戴帽子的颜色,输出格式为:甲戴X帽子乙戴X帽子丙戴X帽原创 2021-12-31 10:29:48 · 8190 阅读 · 2 评论 -
蛮力法 第4关:韩信点兵问题
任务描述本关任务:求韩信一共有多少兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数。按从 1 至5报数,最末一个士兵报的数为 1;按从 1 至 6 报数,最末一个士兵报的数为 5;按从 1 至 7 报数,最末一个士兵报的数为 5;按从 1 至 11 报数,最末一个士兵报的数为 10;按从 1 至 13 报数,最末一个士兵报的数为 11。请问韩信至少有多少兵?编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,最终程序输出格式为:士兵最少有X个(X 为具体数据)。#in原创 2021-12-31 10:29:12 · 7351 阅读 · 0 评论 -
蛮力法 第3关:求3个数的最小公倍数
任务描述本关任务:输入 3 个数 a、b、c, 求这 3 个数的最小公倍数。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:2 4 6预期输出:2,4,和6的最小公倍数是12#include <stdio.h>void main(){ /*********** Begin **********/ int x1,x2,x3原创 2021-12-31 10:28:29 · 4432 阅读 · 0 评论 -
蛮力法 第2关:数字迷
任务描述本关任务:根据下面计算,用蛮力法解决数字迷问题,求出由 A、B、C 替代的相乘数字。A B C A B× AD D D D D D编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,要求程序输出结果格式为:ABCAB*A=DDDDDD(A、B、C、D 为阿拉伯数字)。#include <stdio.h>void main(){ /********** Begin **********/原创 2021-12-31 10:27:50 · 5949 阅读 · 0 评论 -
蛮力法 第1关:百钱百鸡问题
任务描述本关任务:用蛮力法编程解决百钱百鸡问题。百钱百鸡问题:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,要求程序输出所有可行的方法,按公鸡的升序输出,输出格式为:公鸡有a只,母鸡有b只,小鸡有c只,每个输出结果后用空行隔开。(其中 a,b,c分别用具体数据代替)#include <stdio.h>void main原创 2021-12-31 10:26:19 · 5043 阅读 · 1 评论 -
迭代法 第3关:杨辉三角
任务描述本关任务:用倒推法求杨辉三角并输出。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:3 (杨辉三角的总行数)预期输出: 1 1 1 1 2 1#include <stdio.h>void main(){ /**********原创 2021-12-30 14:27:08 · 4586 阅读 · 0 评论 -
迭代法 第2关:求猴子摘了多少个桃子
任务描述本关任务:求第一天共摘了多少个桃子。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以此往后,到第十天早上想再吃时,就只剩一个桃子了。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,输出猴子第一天摘桃子的个数,格式为:原有X个桃子。(X 为桃子的个数)#include <stdio.h>void main(){ /********** Begin **********/ i原创 2021-12-30 14:26:29 · 3433 阅读 · 0 评论 -
迭代法 第1关:求最大公约数
任务描述本关任务:用辗转相除法求两个整数的最大公约数。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:18 30预期输出:30和18的最大公约数是6#include <stdio.h>void main(){ /********* Begin **********/int a,b,c;scanf("%d %d",&a原创 2021-12-30 14:25:43 · 3544 阅读 · 0 评论 -
实验二第3关:判断一个整数能否被3,5,7整除
任务描述本关任务,编写算法对输入的一个整数,判断它能否被 3,5,7 整除,并输出以下信息之一:能同时被 3,5,7 整除;能被其中两数(要指出哪两个)整除;能被其中一个数(要指出哪一个)整除;不能被 3,5,7 任一个整除。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。#include <stdio.h>void main(){ /********** Begin **********/ long n; int k; sc原创 2021-12-30 14:23:00 · 4452 阅读 · 0 评论 -
实验二第2关:预测竞赛成绩
任务描述本关任务:输出学生预测的竞赛成绩。三位老师对某次数学竞赛进行了预测。他们的预测如下:甲说:学生 A 得第一名,学生 B 得第三名。乙说:学生 C 得第一名,学生 D 得第四名。丙说:学生 D 得第二名,学生 A 得第三名。竞赛结果表明,他们都说对了一半,说错了一半,并且无并列名次,试编程输出 A、B、C、D 各自的名次。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,输出格式为:A是第X名,B是第X名,C是第X名,D是第X名。,其中 x 表示他们各自的名次,用阿拉伯原创 2021-12-30 14:22:18 · 3176 阅读 · 0 评论 -
实验二第1关:谁是小偷?
任务描述本关任务:判断谁是小偷。警察局抓了 a,b,c,d 四名偷窃嫌疑犯,其中只有一人是小偷。审问中:a 说:“我不是小偷。”b 说:“ c 是小偷。”c 说:“小偷肯定是 d。”d 说:“ c 在冤枉人。”现在已经知道四个人中三人说的是真话,一人说的是假话,问到底谁是小偷?编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务,结果只需输出小偷是谁即可,例如:a is a thief。#include <stdio.h>void main(){ /原创 2021-12-30 14:20:49 · 4669 阅读 · 4 评论 -
实验一 第4关:求斐波那契额数列的前10项
任务描述本关任务:用循环和递归算法求斐波那契额数列的前 10 项。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:10预期输出:递归算法求的前10项为: 1 1 2 3 5 8 13 21 34 55循环算法求的前10项为: 1 1 2 3 5 8 13 21 34 55#include <stdio.h>int原创 2021-12-30 14:19:19 · 8030 阅读 · 0 评论 -
实验一 第3关:求n的阶乘
任务描述本关任务:用循环和递归算法求 n(小于 10 的正整数) 的阶乘 n!。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:10预期输出:递归算法求得10! = 3628800循环算法求得10! = 3628800#include <stdio.h>float fac_recursion(int n){ /*********原创 2021-12-30 14:18:46 · 5490 阅读 · 1 评论 -
实验一 第2关:从自然数中取3个数进行组合之递归算法任务描述
任务描述本关任务:用递归算法找出 5 个自然数中取 3 个数的组合。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:5 3 (n=5,r=3;,表示从1,2,3,4,5自然数中选择 3 个数)预期输出:5 4 35 4 25 4 15 3 25 3 15 2 14 3 24 3 14 2 13 2 1#include <std原创 2021-12-30 14:16:52 · 10919 阅读 · 0 评论 -
实验一 第1关:从自然数中取3个数进行组合之循环算法
任务描述本关任务:用循环算法找出 5 个自然数中取 3 个数的组合。编程要求请在右侧编辑器Begin-End处补充代码,完成本关任务。测试说明平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:测试输入:5 3 (n=5,r=3;,表示从1,2,3,4,5自然数中选择 3 个数)预期输出:1 2 31 2 41 2 51 3 41 3 51 4 52 3 42 3 52 4 53 4 5#include <std原创 2021-12-30 14:16:01 · 2935 阅读 · 2 评论