算法
qq_43461438
今天写了一点代码,老师看不下去了把我扔进了菜篮子放在了菜市场,每个叔叔阿姨见了我都赞叹道:“好菜啊好菜!”
展开
-
找中位数
找中位数题目描述请设计一个算法,不排序,快速计算出一个无序数列的中位数。 时间复杂度要求为O(n)。如果有奇数个元素,中位数则是数组排序后最中间的那个数字。如果是偶数个元素,中位数则是数组排序后最中间两个元素的平均值。输入有多组输入,每组输入的第一行为n(1<=n<=1e5),表示该数列的元素个数。第二行为n个整数组成的无序数列输出每组样例输出一行,表示该无序数列的中位数。若为偶数,请保留三位小数若为奇数,直接输出样例输入55 3 2 1 4样例输出3Cod原创 2021-02-21 10:18:34 · 849 阅读 · 0 评论 -
前m大数
前m大数时间限制: 1 Sec 内存限制: 33 MB**提交: 398 解决: 203 *****题目描述给你n个整数,请按从大到小的顺序输出其中前m大的数。输入每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。输出对每组测试数据按从大到小的顺序输出前m大的数。样例输入5 33 -35 92 213 -644样例输出213 92 3Code又复制了前一题的代码。。原创 2021-02-21 10:17:37 · 186 阅读 · 0 评论 -
第k小元素
第k小元素题目描述输入一个整数数组,请求出该数组的第k小元素。要求时间复杂度为O(n)。//时间复杂度为O(n)意味着只有一层循环算法分析Java编程中有的时候我们会在控制台输入长度可变的数组数据(分隔符一致),例如:1 2 3 4 5 61或者1,2,3,4,5,6,71然后对这串未知长度的数据进行处理,得到对应类型的数组。分析1.由于长度可变,所以不能直接用数组去接受,可以用ArrayList存储。2.控制台输入,可以用Scanner对象的标记读取next()方法进行处理。原创 2021-02-21 10:16:46 · 1083 阅读 · 0 评论 -
大整数乘法
大整数乘法题目描述使用分治算法实现两个大整数相乘。算法分析使用分治解决两个位数为2的N次方倍的大整数相乘:分析:看起来好像有点变化,分析一下:对这个式子,我们一共要进行4次 n / 2的乘法(AC2次, AD, BC)和 3次加法,因而该算法的时间复杂度为:T(n) = 4 * T(n / 2) + θ(n)通过master定理可以求得 T(n) = θ(n ^ 2),跟小学算法的时间复杂度没有区别。改进:但是我们再来看看,我们是否可以用加法来换取乘法?因为多一个加法操作,也是常数项原创 2021-02-21 10:13:35 · 678 阅读 · 0 评论 -
二路归并
二路归并题目描述编写一个程序,使用分治策略实现二路归并排序(升序)。(图源网络,我忘了哪儿存的了。。。侵删)输入多组输入,每组第一个数字为数组长度,然后输入一个一维整型数组。输出输出排序之后(升序)的一维整型数组,每组输出占一行。样例输入6 1 8 6 5 3 45 12 42 2 5 8样例输出1 3 4 5 6 82 5 8 12 42了解算法一、将一个数组拆分为两个部分,一般取数组长度一般的位置为界,分为两个子数组,再分别对这两个子数组进行递归归并排序。原创 2021-02-21 10:12:14 · 7137 阅读 · 3 评论 -
机器人的指令
湖南省第八届大学生计算机程序设计竞赛题目描述数轴原点有一个机器人。该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置。LEFT:往左移动一个单位RIGHT: 往右移动一个单位SAME AS i: 和第i条执行相同的动作。输入保证i是一个正整数,且不超过之前执行指令数输入输入第一行为数据组数T (T<=100)。每组数据第一行为整数n (1<=n<=100),即指令条数。以下每行一条指令。指令按照输入顺序编号为1~n。输出对于每组数据,输出机器人的最终位置原创 2021-02-21 10:03:58 · 741 阅读 · 0 评论 -
数组合并
题目描述编写一个程序,将两个有序数组合并成一个更大的有序数组,要求时间复杂度为O(n)。输入多组数据输入,每组输入包括两行,每行第一个数字为数组长度n,然后输入n个有序整数。输出输出合并后的数组(升序),每组输出用一个空行隔开。样例输入3 1 3 53 2 4 62 1 24 3 4 5 6样例输出1 2 3 4 5 61 2 3 4 5 6解决思路两个数组都是有序的,如果把它们打乱重新排序的话就跟冒泡排序没有差别,就起不到节省时间的作用。所以就按照第一个数组的第一个数和原创 2021-02-21 10:02:15 · 374 阅读 · 0 评论 -
随机化快速排序
随机化快速排序题目描述使用Java或C++等语言中内置的随机函数实现随机化快速排序,在数组中随机选择一个元素作为分区的主元(Pivot)。输入多组样例输入,每组由一个一维整型数组组成。输出随机化快速排序之后的一维整型数组(升序排列)。样例输入6 1 8 6 5 3 45 12 42 2 5 8样例输出1 3 4 5 6 82 5 8 12 42Codepackage Week7;import java.util.Scanner;//随即快排,随机选一个数作为第一个。//原创 2021-02-21 10:01:15 · 353 阅读 · 0 评论 -
快速排序
快速排序题目描述编程实现快速排序算法,深入理解快速排序算法的基本思想。输入多组输入,每组第一个数字为数组长度,然后输入一个一维整型数组。输出输出快速排序之后的一维整型数组(升序)样例输入6 1 8 6 5 3 45 12 42 2 5 8样例输出1 3 4 5 6 82 5 8 12 42Codepackage Week7;import java.util.Scanner;public class QD { public static void main(St原创 2021-02-21 10:00:13 · 151 阅读 · 0 评论 -
鸡兔共笼问题
鸡兔共笼题目描述一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。输入每组测试数据占1行,每行一个正整数a (a < 32768)。输出输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。如果没有满足要求的答案,则输出两个0。样例输入2320样例输出0 05 10Codepackage Week7;impor原创 2021-02-21 09:58:46 · 537 阅读 · 0 评论 -
与7相关的数
与7相关的数题目描述一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7, 则称其为与7相关的数。现求所有小于等于n(n<100)的与7无关的正整数的平方和。输入案例可能有多组。对于每个测试案例输入为一行,正整数n,(n<100)。输出对于每个测试案例输出一行,输出小于等于n的与7无关的正整数的平方和。样例输入21样例输出2336Codepackage Week7;import java.util.Scanner;public class原创 2021-02-21 09:57:21 · 3229 阅读 · 1 评论 -
整数奇偶排序
整数奇偶排序-数据结构高分笔记题目描述输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求:1.先输出其中的奇数,并按从大到小排列;2.然后输出其中的偶数,并按从小到大排列。输入任意排序的10个整数(0~100),彼此以空格分隔。输出可能有多组测试数据,对于每组数据,按照要求排序后输出,由空格分隔。样例输入0 56 19 81 59 48 35 90 83 75 17 86 71 51 30 1 9 36 14 16 样例输出83 81 75 59 35 19原创 2021-02-21 09:51:08 · 264 阅读 · 0 评论 -
选择排序
选择排序题目描述输入n个正整数,用选择排序输出升序排列后的结果。【必须使用选择排序:即找到最大值和最后一个交换,再在剩下的n-1个数中继续选一个最大值和倒数第2个交换,如此循环,直至全部有序。】输入第1行输入一个正整数n,表示输入的待排序正整数个数。第2行输入n个正整数,两两之间用空格隔开。输出输出按照升序排序之后的n个正整数,两两之间用空格隔开。样例输入42 1 3 4样例输出1 2 3 4Codepackage Week6;import java.util.Scann原创 2021-02-21 09:48:09 · 179 阅读 · 0 评论 -
冒泡排序
冒泡排序题目描述从键盘上输入10个整数,用冒泡法对这10个数进行排序(由小到大)。【必须使用冒泡排序实现】输入以空格分隔的10个整数输出依次输出排好序的10个整数,每个数占一行。样例输入1 3 5 7 9 2 4 6 8 0样例输出0123456789Codepackage Week6;import java.util.Scanner;//从键盘上输入10个整数,用冒泡法对这10个数进行排序(由小到大)。【必须使用冒泡排序实现】public class原创 2021-02-21 09:46:57 · 306 阅读 · 0 评论 -
加密
最难的问题题目描述Kimi生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不变,并且消息原文的所有字母都是大写的。密码中的字母与原文中的字母对应关系如下。密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z原创 2021-02-21 09:45:25 · 388 阅读 · 0 评论 -
选房子
选房子-首届全国中医药院校大学生程序设计竞赛题目描述栋栋和李剑已经大四了,想要出去找房子住。他们一共看中了n套房子。其中第i套房子已经住了ai个人了,它最多能住bi个人。栋栋和李剑想要住在一起,那么请问他们有几套可以选择的房子?输入输入的第一行为一个正整数T (T<=1000),代表一共有T组测试数据。每组测试数据的第一行有一个正整数n (1<=n<=100),代表一共有n套房子。接下来n行,每行有两个正整数ai,bi (1<=ai<=bi<=100),分别代表原创 2021-02-21 09:40:37 · 102 阅读 · 0 评论 -
整数划分问题
数的划分整数划分问题算法分析•将n的最大加数不大于m的划分个数记q(n,m)。就是以n中的最大加数m再进行递归继续划分。•例如:**q(6,3)**表示对6进行划分,最大加数不大于3的划分个数。(如上图,q(6,3)表示3为最大加数即下面的三行,共7)当只有一个数是,它的整数划分就是它自己,即q(n,1)=1;(递归边界)其实最大加数是不能大于n的,故q(n,m)=q(n,n), m>=n;例如q(2,4)=q(2,2)递归关系(表达式):q(n,n)=1+q(n,n-1)正整原创 2021-01-12 07:45:52 · 281 阅读 · 0 评论 -
2021-01-12
九数组分数题目描述1, 2, 3…9 这九个数字组成一个分数,其值恰好为1/3,要求每个数字出现且只能出现一次,如何组合?编写程序输出所有的组合。输入无输出输出所有的结果,如果有多个,每条结果占一行。结果的格式 : xxxx/xxxxx ,按照分子从小到大的顺序输出。Codepackage Week4;//1, 2, 3...9 这九个数字组成一个分数,其值恰好为1/3,要求每个数字出现且只能出现一次,如何组合?编写程序输出所有的组合。//输出所有的结果,如果有多个,每条结果占一行。原创 2021-01-12 07:40:30 · 187 阅读 · 0 评论 -
算法
与7相关的数题目描述一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7, 则称其为与7相关的数。现求所有小于等于n(n<100)的与7无关的正整数的平方和。输入案例可能有多组。对于每个测试案例输入为一行,正整数n,(n<100)。输出对于每个测试案例输出一行,输出小于等于n的与7无关的正整数的平方和。样例输入21样例输出2336Codepackage Week7;import java.util.Scanner;public class原创 2021-01-09 12:37:01 · 282 阅读 · 0 评论 -
乒乓球筐
乒乓球筐题目描述Kimi有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类,并且每种球的数量不少于B盒中的数量,该怎么办呢?输入输入有多组数据。每组数据包含两个字符串A、B,代表A盒与B盒中的乒乓球,每个乒乓球用一个大写字母表示,即相同类型的乒乓球为相同的大写字母。字符串长度不大于1000。输出每一组输入对应一行输出:如果B盒中所有球的类型在A中都有,并且每种球的数量都不大于A,则输出“Yes”;否则输出“No”。样例输入ABCDFYE CDE原创 2021-01-09 16:29:01 · 148 阅读 · 0 评论 -
互异字符串
互异字符串题目描述请实现一个算法,确定一个字符串的所有字符是否全都不同。给定一个字符串,请返回一个True代表所有字符全都不同,False代表存在相同的字符。输入输入一个字符串。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。输出如果所有字符全都不同输出“True”,如果存在相同的字符则输出“False”。样例输入CopyaeiouBarackObama样例输出TrueFalseCodepackage Week4;import java.util.Sc原创 2021-01-07 10:38:38 · 228 阅读 · 0 评论 -
2的个数
2的个数题目描述请编写一个程序,输出0到n(包括n)中数字2出现了几次。输入输入一个正整数n。输出输出0到n的数字中2出现了几次。样例输入21020样例输出113Codepackage Week4;import java.util.Scanner;public class Q1 { //请编写一个程序,输出0到n(包括n)中数字2出现了几次。 //输入一个正整数n。 //输出0到n的数字中2出现了几次。 public static原创 2021-01-07 10:35:24 · 312 阅读 · 0 评论 -
汉诺塔-扩展版(四阶汉诺塔)
汉诺塔-扩展版(4根柱子)题目描述“汉诺塔”是一个众所周知的古老游戏。现在我们把问题稍微改变一下:如果一共有4根柱子,而不是3根,那么至少需要移动盘子多少次,才能把所有的盘子从第1根柱子移动到第4根柱子上呢?为了编程方便,您只需要输出这个结果mod 10000的值。输入该题含有多组测试数据,每组一个正整数n。(0<n<=50000)输出一个正整数,表示把n个盘子从第1根柱子移动到第4根柱子需要的最少移动次数mod 10000的值。样例输入15样例输出129参考博客:参原创 2021-01-07 10:32:38 · 2328 阅读 · 0 评论 -
超级青蛙跳台阶
超级青蛙题目描述一只超级青蛙一次可以跳上1级台阶,也可以跳上2级……它也能够跳上n级台阶。请问,该青蛙跳上一个n级的台阶总共有多少种跳法?输入输入一个正整数n表示台阶的数量。输出输出总的跳法数。样例输入12样例输出12Codepackage Week3;import java.util.Scanner;//一只超级青蛙一次可以跳上1级台阶,也可以跳上2级……它也能够跳上n级台阶。请问,该青蛙跳上一个n级的台阶总共有多少种跳法?public class Q6 { p原创 2021-01-07 10:28:43 · 405 阅读 · 0 评论 -
汉诺塔问题
汉诺塔题目描述使用递归编写一个程序实现汉诺塔问题,要求在输入圆盘数量之后,输出圆盘的移动步骤,输出格式示例如下:第1步:1号盘从A柱移至B柱第2步:2号盘从A柱移至C柱输入多组测试用例,每组输入一个正整数n,n代表圆盘数量。输出每组输出之间有一行空行。样例输入3样例输出第1步:1号盘从A柱移至C柱第2步:2号盘从A柱移至B柱第3步:1号盘从C柱移至B柱第4步:3号盘从A柱移至C柱第5步:1号盘从B柱移至A柱第6步:2号盘从B柱移至C柱第7步:1号盘从A柱移至C柱Cod原创 2021-01-07 10:26:29 · 496 阅读 · 0 评论 -
骨牌覆盖
骨牌覆盖题目描述用大小为1×2的骨牌铺满一个大小为2×n的长方形方格,编写一个程序,输入n,输出铺放方案总数。例如,输入n=3,即大小为2×3的方格,输出3。3种骨牌铺放方案如下图所示:输入多组测试用例,每一组是一个正整数。输出每组输出占一行。只需要输出铺放方案总数,不需要输出具体的铺放方案。样例输入3样例输出3Codepackage Week3;import java.util.Scanner;//用大小为1×2的骨牌铺满一个大小为2×n的长方形方格,编写一个程序,输入n原创 2021-01-07 10:24:08 · 968 阅读 · 0 评论 -
倒序输出
倒序输出题目描述使用递归编写一个程序,逆序输出一个正整数。例如输入1234,输出4321(不含前导0)。输入多组输入,每组输入一个正整数。输出逆序输出结果,每个结果占一行。样例输入1212300样例输出213210Codepackage Week3;import com.sun.org.apache.bcel.internal.generic.GOTO;import java.util.Scanner;public class Q3 { //使用递归编原创 2021-01-07 10:21:50 · 975 阅读 · 0 评论 -
字母全排列
字母全排列题目描述编写一个程序,使用递归算法输出一个一维字符数组中所有字符的全排列,假设字符都不一样。例如{‘a’,‘b’,‘c’}的全排列为(a,b,c), (a,c,b), (b,a,c), (b,c,a), (c,a,b), (c,b,a)输入多组测试用例,每组输入一个正整数n(0<n<=26)。输出输出从a开始,连续n个字母的全排列,且每组输出之间用空格隔开。样例输入12样例输出aabbaCodepackage Week3;import java.原创 2021-01-07 10:19:24 · 794 阅读 · 0 评论 -
蜂房问题
蜂房题目描述有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。输入多组数据输入,每组数据包含两个正整数a, b,且 a<b。输出蜜蜂从蜂房a爬到蜂房b的可能路线数。样例输入 Copy1 23 4样例输出 Copy11Codepackage Week3;import java.util.Scanner;/** * @author 28397 */ //有一只经过训练的蜜蜂只能爬向右原创 2021-01-07 10:17:09 · 795 阅读 · 0 评论 -
数字求和
数字求和题目描述使用递归编写一个程序,计算一个正整数中所有数字之和。例如输入234,输出9。输入多组输入,每组输入一个正整数。输出输出结果,每个结果占一行。样例输入 Copy234样例输出 Copy9Codepackage Week2;import java.util.Scanner;public class Q6 { //使用递归编写一个程序,计算一个正整数中所有数字之和。例如输入234,输出9。 public static void main(String原创 2021-01-07 10:13:51 · 759 阅读 · 0 评论 -
XP的楼梯(跳楼梯)
XP的楼梯题目描述XP是个淘气的孩子,他最近迷上了跳楼梯。他可以一次跳一级,也可以一次跳两级,他居然还能够一次跳三级楼梯(危险动作,请勿模仿)。某次,XP在跳完楼梯后突然想到一个问题,如果有n级楼梯,他从第一级开始往上跳,一直跳到第n级共有多少种不同的方案?你能帮他解决这个问题吗?当然,如果只有一级楼梯,很明显他只有一种选择。输入单组输入数据 n (0<n<30)输出输出一行结果样例输入 Copy29样例输出 Copy15902591Codepackage Week2;原创 2021-01-07 10:11:20 · 383 阅读 · 1 评论 -
递归求和
递归求和题目描述使用递归编写一个程序,求以下数列的前n项:s=1-1/2+1/3-1/4+1/5-1/6+…输入多组数据输入,每组输入一个正整数n输出输出前n项的结果(精确到小数点后六位)样例输入 Copy1样例输出 Copy1.000000Codepackage Week2;import java.text.DecimalFormat;import java.util.Scanner;public class Q4 { //使用递归编写一个程序,求以下数列的前n原创 2021-01-07 10:08:42 · 576 阅读 · 0 评论 -
字符统计
字符统计题目描述输入一行字符串(字符串长度小于10000,由大小写字母、阿拉伯数字和空格组成),分别统计出其中大写英文字母,小写英文字母、阿拉伯数字和空格的个数。输入一行字符串(字符串长度小于10000,由大小写字母、阿拉伯数字和空格组成)输出分别输出大写英文字母,小写英文字母、阿拉伯数字和空格的个数,用空格隔开样例输入h0u84nfx 7样例输出0 5 4 1Codepackage Week2;import java.util.Scanner;public class Q3原创 2021-01-07 10:06:18 · 418 阅读 · 0 评论 -
矩阵对角求和
矩阵对角求和题目描述求一个n×n矩阵对角线元素之和,其中1≤n<100,矩阵元素都小于10000。输入第一行是一个正整数n。然后是n行,每行对应矩阵的每行,元素间用空格隔开。输出第一行为主对角线元素和,第二行为副对角线的元素和。样例输入35724 1478 93586962 4464 57058145 3281 6827样例输出1701521967Codepackage Week2;import java.util.Scanner;//求一个n×n矩阵对角线原创 2021-01-07 10:03:54 · 1055 阅读 · 0 评论 -
对称矩阵
对称矩阵题目描述输入一个N维矩阵,判断是否对称。输入输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数。接下来的N行,每行包括N个数,表示N*N矩阵的元素。输出可能有多组测试数据,对于每组数据,输出"Yes!”表示矩阵为对称矩阵。输出"No!”表示矩阵不是对称矩阵。样例输入168 31 70 25 70 79 59 25 59 63 36 46 82 28 62 92 96 43 28 样例输出Yes!Yes!No!Codepa原创 2021-01-07 09:59:52 · 1757 阅读 · 0 评论 -
母牛的故事
母牛的故事题目描述有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0 n=0表示输入数据的结束,不做处理。输出对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。样例输入2450样例输出246Codepackage Test01;import java.util.Scanner;public clas原创 2021-01-07 09:54:51 · 164 阅读 · 0 评论 -
水仙花数
题目描述春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。现在要求输出所有在m和n范围内的水仙花数。输入输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。输出对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格原创 2021-01-07 09:50:28 · 102 阅读 · 0 评论 -
平方和与立方和
平方和与立方和题目描述给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。输入输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。输出对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。你可以认为32位整数足以保存结果。样例输入1 32 5样例输出4 2820 152Codeimport java.util.Scanner;public class Main { /原创 2021-01-07 09:47:20 · 175 阅读 · 0 评论 -
求奇数的乘积
求奇数的乘积题目描述给你n个整数,求他们中所有奇数的乘积。输入输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。输出输出每组数中的所有奇数的乘积,对于测试实例,输出一行。样例输入3 1 2 34 2 3 4 5样例输出315Codeimport java.util.Scanner;public class Main { //给你n个整数,求他们中所有奇数的乘积。原创 2021-01-07 09:42:35 · 601 阅读 · 0 评论 -
算法练习
计算球体积计算球体积题目描述输入输出样例输入样例输出提示Code计算球体积题目描述根据输入的半径值,计算球的体积。输入输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。输出输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。样例输入11.5样例输出4.18914.137提示#define PI 3.1415927Codepackage Test01;import java.text.DecimalFormat;import java.原创 2021-01-07 09:37:29 · 70 阅读 · 0 评论