java
-babarg
今天写了一点代码,老师看不下去了把我扔进了菜篮子放在了菜市场,每个叔叔阿姨见了我都赞叹道:“好菜啊好菜!”
展开
-
找中位数
找中位数题目描述请设计一个算法,不排序,快速计算出一个无序数列的中位数。 时间复杂度要求为O(n)。如果有奇数个元素,中位数则是数组排序后最中间的那个数字。如果是偶数个元素,中位数则是数组排序后最中间两个元素的平均值。输入有多组输入,每组输入的第一行为n(1<=n<=1e5),表示该数列的元素个数。第二行为n个整数组成的无序数列输出每组样例输出一行,表示该无序数列的中位数。若为偶数,请保留三位小数若为奇数,直接输出样例输入55 3 2 1 4样例输出3Cod原创 2021-02-21 10:18:34 · 818 阅读 · 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 · 155 阅读 · 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 · 1021 阅读 · 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 · 634 阅读 · 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 · 7050 阅读 · 3 评论 -
机器人的指令
湖南省第八届大学生计算机程序设计竞赛题目描述数轴原点有一个机器人。该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置。LEFT:往左移动一个单位RIGHT: 往右移动一个单位SAME AS i: 和第i条执行相同的动作。输入保证i是一个正整数,且不超过之前执行指令数输入输入第一行为数据组数T (T<=100)。每组数据第一行为整数n (1<=n<=100),即指令条数。以下每行一条指令。指令按照输入顺序编号为1~n。输出对于每组数据,输出机器人的最终位置原创 2021-02-21 10:03:58 · 716 阅读 · 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 · 358 阅读 · 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 · 337 阅读 · 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 · 135 阅读 · 0 评论 -
鸡兔共笼问题
鸡兔共笼题目描述一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。输入每组测试数据占1行,每行一个正整数a (a < 32768)。输出输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。如果没有满足要求的答案,则输出两个0。样例输入2320样例输出0 05 10Codepackage Week7;impor原创 2021-02-21 09:58:46 · 508 阅读 · 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 · 3130 阅读 · 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 · 213 阅读 · 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 · 164 阅读 · 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 · 282 阅读 · 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 · 265 阅读 · 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 · 171 阅读 · 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 · 110 阅读 · 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 · 252 阅读 · 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 · 748 阅读 · 0 评论 -
XP的楼梯(跳楼梯)
XP的楼梯题目描述XP是个淘气的孩子,他最近迷上了跳楼梯。他可以一次跳一级,也可以一次跳两级,他居然还能够一次跳三级楼梯(危险动作,请勿模仿)。某次,XP在跳完楼梯后突然想到一个问题,如果有n级楼梯,他从第一级开始往上跳,一直跳到第n级共有多少种不同的方案?你能帮他解决这个问题吗?当然,如果只有一级楼梯,很明显他只有一种选择。输入单组输入数据 n (0<n<30)输出输出一行结果样例输入 Copy29样例输出 Copy15902591Codepackage Week2;原创 2021-01-07 10:11:20 · 315 阅读 · 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 · 541 阅读 · 0 评论