收藏 分享(赏)

JAVA经典算法40题.doc

上传人:w89153 文档编号:6545953 上传时间:2019-04-16 格式:DOC 页数:27 大小:194.50KB
下载 相关 举报
JAVA经典算法40题.doc_第1页
第1页 / 共27页
JAVA经典算法40题.doc_第2页
第2页 / 共27页
JAVA经典算法40题.doc_第3页
第3页 / 共27页
JAVA经典算法40题.doc_第4页
第4页 / 共27页
JAVA经典算法40题.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、JAVA 经典算法 40 题【程序 1】 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21 public class exp2public static void main(String args)int i=0;for(i=1;i k,但n能被k整除,则应打印出k的值,并用n 除以k的商, 作为新的正整数你,重复执行第一步。 (3)如果n不能被k 整除,则用k+1作为k的值, 重复执行第一步。 public class e

2、xp2public exp2()public void fengjie(int n)for(int i=2;i =90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。 1.程序分析: (a b)?a:b 这是条件运算符的基本例子。 import javax.swing.*;public class ex5 public static void main(String args)String str=“;str=JOptionPane.showInputDialog(“请输入N的值(输入exit退出):“);int N;N=0;tryN=Integer.pa

3、rseInt(str);catch(NumberFormatException e)e.printStackTrace();str=(N90?“A“:(N60?“B“:“C“);System.out.println(str); 【程序 6】 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 最大公约数:public class CommonDivisorpublic static void main(String args)commonDivisor(24,32);static int commonDivisor(int M, int N)if(N2)

4、/*如果是闰年且月份大于2,总天数应该加一天*/ sum+; System.out.println(“It is the the day:“+sum);【程序 15】 题目:输入三个整数 x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 x y 则将 x 与 y 的值进行交换,然后再用 x 与 z 进行比较,如果x z 则将 x 与 z 的值进行交换,这样能使 x 最小。 import java.util.*;public class test public static void main (Stringargs) in

5、t i=0;int j=0;int k=0;int x=0;System.out.print(“请输入三个数n“ ); Scanner input = new Scanner(System.in);i=input.nextInt();j=input.nextInt();k=input.nextInt();if(ij)x=i;i=j;j=x;if(ik)x=i;i=k;k=x;if(jk)x=j;j=k;k=x;System.out.println(i+“, “+j+“, “+k);【程序 16】 题目:输出 9*9 口诀。 1.程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列

6、。 public class jiujiu public static void main(String args)int i=0;int j=0;for(i=1;i arrayList=new ArrayList();for (int i = 0; i =1;i-) for(j=1;j=1;i-) for(int k=1; k 1) value = n * recursion(n-1);return value;【 程序 23】 题目:有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2人大两岁。问第

7、 2 个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10 岁),再往回推。 public class Ex23 static int getAge(int n)if (n=1)return 10;return 2 + getAge(n-1);public static void main(String args) System.out.println(“第五个的年龄为:“+ getAge(5);【 程序 24】 题目:给一个不多于 5 位的

8、正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 import java.util.Scanner;public class Ex24 public static void main(String args) Ex24 tn = new Ex24();Scanner s = new Scanner(System.in);long a = s.nextLong();if(a 100000) System.out.println(“Error Input, please run this program Again“);System.exit(0);if(a =0 i-) System.o

9、ut.print(chi);【程序 25】 题目:一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。 import java.util.Scanner;public class Ex25 static int a = new int5;static int b = new int5;public static void main(String args) boolean is =false;Scanner s = new Scanner(System.in);long l = s.nextLong();if (l 99999 | l = 0; i-)

10、 ai = (int) (l / (long) Math.pow(10, i);l =(l % ( long) Math.pow(10, i);System.out.println();for(int i=0,j=0; isum/2)System.out.println(sum+“是素数“ );【程序 28】 题目:对 10 个数进行排序 1.程序分析:可以利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后 8 个进行比较,并进行交换。 import java.util.Arrays;import java.util.Random;import

11、 java.util.Scanner;public class Ex28 public static void main(String args) int arr = new int11;Random r=new Random();for(int i=0;imyarrk)temp=myarri;myarri=myarrk;myarrk=temp;System.out.println(“);for (int k=1;kmyarr11)temp=myarr11;for(int j=11;j=k+1;j-)myarrj=myarrj-1;myarrk=temp;System.out.println(

12、“); for (int k=1;k=1;k-)System.out.print(myarrk+“,“);【程序 32】 题目:取一个整数 a 从右端开始的 47 位。 程序分析:可以这样考虑: (1)先使 a 右移 4 位。 (2)设置一个低 4 位全为 1,其余全为 0 的数。可用(0 =0;) for(int j=0;jarraysj+1) int temp=arraysj; arraysj=arraysj+1; arraysj+1=temp; for(int n=0;n amax) max = i; /遍历数组,如果大于amax ,就把他的数组下标赋给maxif (ai 1) if(a

13、rrindex = true) /当在圈里时countNum +; /报数递加if(countNum = 3) /报道3时countNum =0;/从零开始继续报数arrindex = false;/此人退出圈子leftCount -;/剩余人数减一index +;/每报一次数,下标加一if(index = n) /是循环数数,当下标大于n时,说明已经数了一圈,index = 0;/将下标设为零重新开始。for(int i=0; i list=new ArrayList(); list.add(“010101“); list.add(“010003“); list.add(“010201“);

14、 Collections.sort(list); for(int i=0;ilist.size();i+) System.out.println(list.get(i); 【程序 40】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? public class Dg static int ts=0;/桃子总数int fs=1;/记录分的次数static int hs=5;/猴子数.int tsscope=5000;/桃子数的取值范围.太大容易溢出 .public int fT(int t)if(t=tsscope)/当桃子数到了最大的取值范围时取消递归System.out.println(“结束 “);return 0;elseif(t-1)%hs=0 fs+=1;return fT(t-1)/5*4);/ 返回猴子拿走一份后的剩下的总数else/没满足条件fs=1;/分的次数重置为1return fT(ts+=1);/桃子数加+1public static void main(String args) new Dg().fT(0);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报