当前位置:首页 > JAVA算法题目集合
40有两组不同长度的数列分别为从小到大排列,设计一种算法把两列数合并成一列从小到大排列的数列。
首先,比较两列数的第一个数,选出较小的数存储并用该组的下一个数继续与较大数比较。然后,每次选出一个较小的数后都继续用该组的下一个数与上一次比较后的较大数比较。
依此类推,直至有一组数列全部被比较完。把有剩余组的数按顺序加入到结果数列的尾部。
41.模拟投掷两只一样的色子,产生随机的结果,并且计算出百分比。
把每次随机产生的色子数存储到二维数组中。如:产生一对6和5的点数则在原“出现次数数组[6][5]”的基础上加1次出现的次数。 42.
有十二个同样形状的球,其中一个或重于或轻于其他的球,用天平称找出这个球,而且分出这个球是重还是轻于其他的球。请设计一种算法。
将12个球分为1、2、3组各4球,称1、2组,如果平衡异常球在3组中,如果不平衡将天平的倾斜记录下来;
区别对待:
A、1、2组平衡时,坏球在第三组
B、1、2组不平衡时,坏球在两组之一,拿第1组与第3组比较平衡则2组有坏球,不平衡则1组有坏球。
比较4个小球
区别对待:
第1球与第2球等重,比较第1个与第3个,等重则第4球为坏球;不等则3球为坏球。 第1球与第2球不等重,比较第1个与第3个,等重则第2球为坏球,不等则第1各为坏球。
由此可以扩展为n球问题。
43:有一组无序排列的整数,通过算法计算使它们成为从小到大依次排列?
如果在一次循环中,最后的某些元素没有交换过,则说明后面这些元素的顺序已排序,下次循环可不对其进行比较。
本方法主要考虑要排序的数组元素的范围,而不是每一轮排序都将数组元素的范围减少1。
44:从键盘上任意输入一个1-10之间的整数N,就产生一个N × N阶的方阵,并且此方阵是一个螺旋方阵。
求一个螺旋方阵,其实就是分别往下、往右、往上、往左四个方向来依次填充数字,那么就是想办法判定什么时候向什么方向填充数字。
本算法采用四个子程序来分别控制往下、往右、往上、往左四个方向的填充,设四个变量,用于标识四个方向每次填充的起始位置,每填充一个方向后起始位置加1。
再用一个二维数组存放要填充的数字先将这个数组数据全部置为0,在每个方向填充时,每填充一个数字,就将这个数字存放到数组中相应的位置,通过判断要填充的位置所对应的数组数据是否为0,来确定是否终止该方向的数字填充。
45:射击运动员m发打中n环有多少种可能,编写程序计算出来,并显示出结果,0环和10环均有效。
循环+递归调用。
每层递归计算给定的环数和子弹数可以有多少重可能。直到所有可能都被取为止。
46-70
遍历数字1-9。产生一个6位数y和一个3位数x,使y=x*x,并且组成y与x的9个数各不相同。
首先依次比较每一个平方后是6位数的3位数,记录下3位数和平方后的6位数。
然后比较3位数的每一位和6位数的每一位是否合格。合格则输出。
比较下一个3位数。
47-71
输入10个数字,利用桶排序将它们按从小到大排序显示出来。
桶排序的思想是若待排序的记录的关键字在一个明显有限范围内(整型)时,可设计有限个有序桶,每个桶装入一个值;
顺序输出各桶的值,将得到有序的序列。
48-72
n 个造币厂生产同一种硬币,但其中某些厂由于材料问题造出了非标准的硬币。设标准的硬币重c克(已知),非标准的硬币只有一种重量,重c(1+e)克,其中e是个不为0的未知数,可以取正数或负数。
为了查出哪些厂生产的硬币是非标准的,从各厂中抽出一些样品(个数相同)放在一起进行称重,设计一种算法查出哪个厂子的硬币是不合格的。
将所有造币厂的硬币等分为1、2、3组如有剩余划为第4组,称1、2组。
1 如果平衡异常的硬币不在1,2组中,比较1,3组如果平衡则不合格的在4组中如果不平衡不合格的在三组中。递归把该组分为最多4组。
2 如果不平衡将天平的倾斜记录下来,比较1,3组如果平衡不合格的在2组中,如果不平衡不合格在1组中。递归把该组分为最多四组。
依此类推直至最后剩余1个或两个小球和标准重量比较后找出不合格的造币厂的编号。
49-73
有一组无序排列的整数,通过算法计算使它们成为从小到大依次排列?
每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。
50-74
36块砖,36人搬,男的搬4块,女的搬3块,2个小儿抬1块,要求1次全部搬完,问需男、女、小孩各多少人?
首先已知共36人和36块砖,男人+女人+小孩=36人,男人 × 4 + 女人 × 3 + 小孩 ÷ 2 = 36块砖。 51
公共汽车包括起始站和终点站共15站,有一车辆,除终点站外,每一站上车的乘客都恰好有一位到以后的每一站下车。
为了使每一位乘客都有座位,这车辆公车至少要有多少个座位?这辆车至少售出多少张票?
先求票数,票数应该是等于上车或是下车的总人数,再求出座位数。 52
任意一个四位数(每位上的数字都不相同),经有限次“重排求差”操作,得到的黑洞数为6174。编写程序验证。
:黑洞数又称陷阱数,是类具有奇特转换特性的整数。任何一个数字不全相同整数,经有限次'重排求差'操作,总会得某一个或一些数,这些数即为黑洞数。
'重排求差'操作即组成该数的数字重排的最大数减去重排的最小数。
如:1234重排后得最大数4321,最小数1234,有它们两个相减,将得到的差再进行重排求差,一直到差数为6174或0。 53:
计算两个矩阵A、B的乘积矩阵C。
矩阵A={1,2,3,4,5,6};
矩阵B={7,8,9,10,11,12}。
:两个矩阵的乘积仍然是矩阵。若A矩阵有m行p列,B矩阵有p行n列,则它们的乘积C矩阵有m行n列。C=A*B的算法:
Cij= (i=0,1,??,m-1;j=0,1,??,n-1)
设A、B、C矩阵用3个2维数组表示:a数组有3行2列,b数组有2行3列,则c
数组有3行3列。
如:
c[0][0]= a[0][0]*b[0][0]+a[0][1]*b[1][0]; c[1][0]= a[1][0]*b[0][1]+a[1][1]*b[1][1];
从以上算法可以看出,需要3重循环(i、j、k)才能计算C矩阵的各元素。 54:
求n阶螺旋矩阵问题。
:求n阶螺旋矩阵问题。多重循环实现。矩阵元素按照从1到n螺旋递增。
例如:
01,02,03, 08,09,04, 07,06,05,
55:根据输入的精度用迭代法求一个正数的平方根。 迭代公式:Xn+1=(Xn+a/Xn)/2。 :
“迭代法”是用于求方程或求方程组近似根的一种常用算法设计方法。
设方程为f(x)=0。用某种数学方法导出等价形式x=g(x),然后按以下步骤执行:
(1) 选一个方程的近似根,赋给变量x0;
(2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;
(3) 当x0与x1的差的绝对值还不小于指定的精度要求时,重复步骤(2)的计算。
若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。 56:
输入整数N,输出1??N的全部不同排列的总数,当N<=6。 :
定义一个数组存储所有数,按从后向前的顺序依次两两改变数组的存储,变换数的排列方法。然后输出。
57:取两数之间均匀分布的随机数,并显示。
取出50个在概率上符合均匀分布的一系列数。在概率上符合均匀分布是说按概率公式计算后,其记过符合概率上的均匀分布规律。 使用循环求解。
共分享92篇相关文档