Java算法
from_heat
大佬们互相关注一波呗
展开
-
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
先定义为字符串类型,字符串相加只会增加字符串的长度,将两个字符串相连。再转化成整型相加求和即可。public class Test8 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入相加的个数:"); int n = s....原创 2018-10-18 17:00:10 · 2685 阅读 · 0 评论 -
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,以此类推,推到第一人(10岁),再往回推。已知第一个人10岁,之后每个人比前一个人大...原创 2018-12-08 16:36:29 · 12404 阅读 · 0 评论 -
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public class Test24 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请给一个不多于5位的正整数:"); String str = sc.nextLine(); char[] c = str.toCharA...原创 2018-12-08 17:33:39 · 3274 阅读 · 0 评论 -
题目:一个5位数,判断它是不是回文数,个位与万位相同,十位与千位相同。
分析:个位 num%10 万位 num/10000 十位 num%100/10 千位 num%10000/1000方法1:public class Test25 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.o...原创 2018-12-08 21:08:12 · 1511 阅读 · 0 评论 -
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。Monday Tuesday Wednesday Thursday Friday Saturday Sunday T*2 S*2public class Test26 { public static void main(String[] args) { Scanner sc = new Scan...原创 2018-12-08 21:52:59 · 6279 阅读 · 3 评论 -
约瑟夫环 幸运数字(集合练习)
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。例:当n=8,m=3时。import java.util.ArrayList;/** * 约瑟夫环 幸运数字 */public class Te...原创 2018-12-13 21:19:43 · 404 阅读 · 0 评论 -
1000的阶乘所有零和尾部零的个数
求出1000的阶乘所有零和尾部零的个数,不用递归做。import java.math.BigInteger;/** * 需求:求出1000的阶乘所有零和尾部零的个数,不用递归做。 * */public class Test6 { public static void main(String[] args) { method_allZero(); method_last...原创 2018-12-13 21:21:59 · 469 阅读 · 0 评论 -
求出1000的阶乘尾部零的个数(递归)
分析:5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100...1000 1000 / 5 = 200 5的倍数 1个0 这些数和任意的偶数相乘,结尾就会产生05*5 5*5*2 5*5*3 5*5*4 5*5*5 5*5*6 5*5*7 5*5*8 5*5*9 5*5*10...5*5*40 ...原创 2018-12-13 21:26:15 · 826 阅读 · 1 评论 -
不死神兔
不死神兔故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡。问:一对刚出生的兔子,一年内繁殖成多少对兔子? 1 1 2 3 5 8 131 = fun(1) 1 = fun...原创 2018-12-13 21:29:29 · 1110 阅读 · 0 评论 -
题目:求100之内的素数。
分析:质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。for循环遍历100,使其从一一直除到他的开根号。只除到开根号是因为开根号之后的数如果能被整除必定将与一个开根号之前的数相对应,此二数相乘与所开根号的数相同。因为最小的素数是2,所以循环从2开始。public class Test27 { public static void mai...原创 2018-12-09 15:34:20 · 2064 阅读 · 0 评论 -
题目:利用递归方法求5!。
分析:5! = 5 * 4 * 3 * 2 * 1 5 * recursion(4)(代表4!) 4 * recursion(3)(代表3!) 3 * recursion(2)(代表2!) ...原创 2018-12-08 15:31:36 · 3804 阅读 · 2 评论 -
题目:求1+2!+3!+...+20!的和。
程序分析:此程序只是把累加变成了累乘。public class Test21 { public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 20; i++) { sum += factorial(i); } System.out.println(sum); }...原创 2018-12-08 12:22:46 · 830 阅读 · 0 评论 -
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
程序分析:抓住分子与分母的变化规律:分母mu:1,2,3,5,8,13,21,34,55,89,144...分子zi:2,3,5,8,13,21,34,55,89,144,233...分子zi把数赋给了分母mu,同时自己与分母的和(zi+mu)变成新分子赋给分子zi。public class Test20 { public static void main(String[] args...原创 2018-12-07 17:39:52 · 38526 阅读 · 1 评论 -
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
两个易错点:1.sum应该在每次内循环结束之后进行初始化。2.对因子之和与数本身的判断应该在内循环结束后。 public class Test9 { public static void main(String[] args) { int sum,i,j; for(i = 1; i <= 1000; i++) { sum = 0; for(j = 1; j ...原创 2018-10-18 19:29:55 · 3462 阅读 · 0 评论 -
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
需注意的是,球在弹起后再落下,也就是除第一次下落,之后的每次弹起和下落经过的距离相同,同一段距离乘二即可。 public class Test10 { public static void main(String[] args) { double high = 100,sum = 100; for(int i = 0; i < 10; i++) { high = ...原创 2018-10-18 20:58:03 · 2367 阅读 · 0 评论 -
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
for循环的嵌套输出即可,不要想太多。public class Test11 { public static void main(String[] args) { int i,j,k,sum = 0; System.out.print("符合条件的数有:"); for(i = 1; i < 5; i++) { for(j = 1; j < 5; j++)...原创 2018-10-19 16:26:41 · 369 阅读 · 0 评论 -
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可以提成7.5%;20万到40万
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可以提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提...原创 2018-10-19 17:10:14 · 11619 阅读 · 0 评论 -
题目:一个整数,他加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方。public class Test13 { public static void main(String[] args) { int i,j,k; for(i = 1; i < 100000; i++) { for(j = 10; j < 100; j++) { for(k = 13...原创 2018-10-19 18:58:23 · 4516 阅读 · 0 评论 -
题目:输入某年某月某日,判断这一天是这一年的第几天?
以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。public class Test14 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请分别输入所要查...原创 2018-10-19 21:07:45 · 7539 阅读 · 4 评论 -
题目:输入三个整数x,y,z,请把三个数由小到大输出。
我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与y进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。public class Test15 { public static void main(String[] args) { Scanner s = new Scanner(System.in); ...原创 2018-10-19 21:49:36 · 5984 阅读 · 0 评论 -
题目:输出9*9口诀。
分行与列考虑,共9行9列,i控制行,j控制列。public class Test16 { public static void main(String[] args) { Multiplicative(9); } static void Multiplicative(int num) { int i,j; for(i = 1; i <= num; i++) { ...原创 2018-10-20 10:52:42 · 1001 阅读 · 0 评论 -
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再吃时,见
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再吃时,见只剩下一个桃子了。求第一天共摘了多少?采取逆向思维的方法,从后往前推断。 public class Test17 { public static void main(String[] ...原创 2018-10-20 11:19:42 · 10305 阅读 · 0 评论 -
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单,a说他不和x比,c说他不和x,z比,请编程序找出三队赛手大的名单。
通过循环嵌套安排对战顺序,再用if语句判断避免参赛的队员重复,最后通过题目要求筛选出符合题意的对手。public class Test18 { public static void main(String[] args) { char a,b,c; for(a = 'x'; a <= 'z'; a++) { for(b = 'x'; b <= 'z'; b++) ...原创 2018-10-20 12:11:13 · 12178 阅读 · 1 评论 -
题目:对10个数进行排序。
程序分析:可以利用选择法,即从9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。(选择排序)public class Test28 { public static void main(String[] args) { int[] arr = {1,4,3,6,7,5,8,10,9,2}; for (int i = 0; i <...原创 2018-12-09 17:38:22 · 2239 阅读 · 1 评论