`
我是小仙321
  • 浏览: 13766 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java基础算法题

    博客分类:
  • Java
阅读更多

在网上搜索Java的基础算法题,差不多都是那50道,也有很多人贴了代码。参考着一份代码,我自己也大概写了一遍,还有一些小分析,有些重复性的或者太简单的题目就没有写了。有的题有自己的代码和网上的代码的对比。自己的很多编程习惯都不规范,由于时间问题,排版也有些乱,现放到blog上,打击凑合看吧,希望不吝给予指正。

我参考的:http://www.cnblogs.com/tonylp/archive/2013/03/20/2971272.html

http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html
 【程序1 TestRabbit.java
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 
分析:
题目中说的从出生后的第3个月开始每个月都生一对兔子,意思就是新出生的每对兔子,长满2个月之后就开始生小兔子了。
也就是:小兔子出生→满1个月→满2个月,生一对小兔子。这个我总容易理解有偏差。
所以可知,所分析的当前第i个月,这个月的兔子总数,大致可以分为2部分,1部分是非新生的,另一部分是当月新生的。非新生的应该是第i-1个月的兔子总数,新生的取决于第i-2个月的兔子总数。即兔子[i]=兔子[i-1]+兔子[i-2]
前两个月兔子都是1对,从第3个月开始,每个月的兔子就是前两个月的兔子数之和。
所以: 兔子的规律为数列1,1,2,3,5,8,13,21....
我的代码:
递归的方法:
【程序2 FindPrimeNumber.java
题目:判断101-200之间有多少个素数,并输出所有素数。 
分析:判断素数的方法:用一个数分别去除以2这个数本身,如果有能被整除的情况,则表明此数不是素数,反之是素数。
我的代码:
 
【程序3FindDaffodilNumber.java
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: 
153
是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 
分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
这个过程中遇到一个问题,关于String的substring(int beginIndex,int endIndex),之前一直理解错了。截取的子字符串的起始下标是beginIndex,终止坐标是endIndex-1,而不是endIndex。所以当beginIndex==endIndex时,子字符串是空的。
想要输出一个字符串某一位上的字符,可以直接使用str.charAt(n);
我的代码:
【程序4FenJie.java
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 
程序分析:对n进行分解质因数,应先找到一个最小的质数k(k=2),然后按下述步骤完成: 
(1)
如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 
(2)
如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 
(3)
如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
我的代码:
网上的代码:
【程序6Test1.java GcdTest.java后者是辗转相除法
题目:输入两个正整数mn,求其最大公约数和最小公倍数。 
1.
程序分析:利用辗除法
我的代码:(未使用辗除法)
以上代码可以直接简化为如下:
辗除法:
辗除法(zhǎnchú fǎ )——辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。它并不需要把二数作质因子分解。
设两数为a、b(b<a),求它们最大公约数(a、b)的步骤如下:用b除a,得a=bq......r 1(0≤r)。若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b=r1q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1,……如此下去,直到能整除为止。其最后一个非零余数即为(a,b)。
两个数之积=这两个数的最大公约数*最小公倍数
【程序11 TestTN.java
题目:有1234个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 
分析:可填在百位、十位、个位的数字都是1234。组成所有的排列后再去 掉不满足条件的排列。
代码:
这种嵌套循环的思想没有想到
【程序20TestAdd2.java
题目:有一分数序列:2/13/25/38/513/821/13...求出这个数列的前20项之和。 
分析:请抓住分子与分母的变化规律。
我的代码:
网上的代码:
把分子和分母分别放到两个数组中。
【程序21TestJieCheng.java
题目:1+2!+3!+...+20!的和 
分析:此程序只是把累加变成了累乘。
我的代码:使用递归
网上的代码:
【程序26Ex26.java
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。 
1.
程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 
我的代码:
【程序33YangHui.java
题目:打印出杨辉三角形(要求打印出10行如下图) 
分析: 
     1
    1 1
   1 2 1
  1 3 3 1
 1  4 6 4 1
1 5 10 10 5 1
我的代码:
循环有点儿多。。。效率应该很低吧。。发现我特别喜欢用好多层循环。。。囧
 
网上的代码:
     1
    1 1
   1 2 1
  1 3 3 1
  4 6 4 1
1 5 10 10 5 1
思想:
观察每一行的数组可知,从第三行开始,每一行的数组,首尾都是1,第2个数到倒数第2个数,都是上边一行的这个位置上的数与前一个数的和。所以可以定义一个数组,一行一行的重新赋值,打印。
【程序37 Test3Quit.java
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从13报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 
代码:
【程序44 TestEven.java
题目:一个偶数总能表示为两个素数之和。 
代码:
 
转载请注明来自:http://java-future.iteye.com
2
5
分享到:
评论

相关推荐

    java经典算法90题含源码及答案.rar

    通过解决这些算法题,开发者可以锻炼逻辑思维,理解和掌握数据结构,如数组、链表、栈、队列、树、图等,以及排序、搜索、图论、动态规划等核心算法。 在JAVA经典算法40题.doc中,可能包含的题目类型有递归、分治、...

    JAVA零基础算法练习题

    "JAVA零基础算法练习题"就是针对这样的需求而设计的一系列练习题目,旨在帮助初学者提升对Java语言的理解和运用,同时培养解决问题的能力。 首先,让我们深入了解一下算法。算法是一系列精确的规则或步骤,用于解决...

    java常见算法题解析大全。

    总的来说,这个“java常见算法题解析大全”是一份宝贵的资源,它涵盖了算法的基础到高级主题,可以帮助Java开发者巩固理论知识,提高编程技巧,解决实际问题。通过深入学习和实践这些算法,你将能够更有效地处理复杂...

    50道Java程序算法题

    这份"50道Java程序算法题"的压缩包显然旨在帮助开发者提升算法设计和实现能力。下面,我们将深入探讨这些标签所涵盖的知识点,并根据提供的文件名推测可能的结构。 1. **Java基础**:作为Java程序员,对语言的基础...

    JAVA经典算法面试39题及答案

    本文将详细探讨39道JAVA经典算法面试题目,每题都附带答案和解析,从而帮助读者深入理解并提升自身在JAVA编程中的算法应用能力。 首先,我们必须明确算法的定义和重要性。算法是计算机科学的核心,它是一系列解决...

    java经典算法题

    Java经典算法题是程序员在开发过程中常常需要面对的挑战,它们可以帮助我们提升编程思维,优化问题解决能力,尤其是在处理复杂数据结构和高效计算时显得尤为重要。这个压缩包中包含了一份名为"JAVA经典算法40题.doc...

    JAVA基础编程练习题50题及经典算法90题【含源码及答案】-史上最全

    Java基础编程练习题和经典算法是提升编程技能和准备面试的关键环节。这50题的基础编程练习涵盖了Java语言的核心概念,如数据类型、控制结构、类与对象、异常处理、集合框架等,旨在帮助学习者巩固基础知识并提高编程...

    java经典算法练习题

    本压缩包包含了三个文档,分别是“JAVA经典算法40题.doc”、“最新JAVA编程题全集_50题及答案.doc”和“50道JAVA基础编程练习题.doc”,这些资源为初学者提供了大量的实践机会,有助于深入理解和运用Java。...

    JAVA基础算法编程题

    本资源“JAVA基础算法编程题”旨在帮助初学者和进阶者巩固算法基础,提升编程能力。这份资料包含了一些经典的数学题目,并提供了相应的解答,对于学习和理解算法有着极大的帮助。 首先,让我们来了解一下算法。算法...

    javaSE基础算法题

    "JavaSE基础算法题"这个主题涵盖了在Java标准版环境(Java SE)中解决算法问题的基础知识。这些题目通常涉及到数据结构、排序、搜索、图论等多个方面,旨在提升开发者解决问题的能力和程序设计的效率。 一、数据...

    java笔试面试算法题

    在Java笔试面试中,算法题是考察候选者编程能力、逻辑思维和问题解决能力的关键环节。这些题目通常涵盖数据结构、排序、搜索、图论等多个领域,涉及到的基础知识包括但不限于以下内容: 1. **基础算法**:如冒泡...

    JAVA基础编程练习题50题及经典算法90题【含源码及答案】

    这份资源包含的"JAVA基础编程练习题50题及经典算法90题"是学习和提升Java技能的理想材料。以下将分别介绍这些题目可能涵盖的知识点。 一、Java基础编程练习题50题: 这50题主要针对Java语法、数据类型、控制结构、...

    JAVA经典算法30题

    对于Java程序员而言,掌握一系列经典的算法题是提升自身竞争力的重要途径。本文将围绕“JAVA经典算法30题”这一主题,详细解读其中几个算法的实现逻辑和应用场景,希望能对读者有所启发。 首先,让我们来看第一个...

    Java 初级工程师基础算法题.zip

    Java 初级工程师五道基础算法题

    JAVA经典算法90题【含源码】

    最后,"50道JAVA基础编程练习题.doc"可能包含了更多基础编程训练,包括控制流(条件语句、循环语句)、异常处理、多线程、集合框架的使用等。这些题目旨在巩固Java语言的基础,确保开发者能够编写出高效、可读性强的...

    JAVA经典算法40题

    这些题目覆盖了基础算法和数据结构,包括递归、循环、质数判断、数列计算等概念,对于学习和理解Java编程以及算法设计都有很好的实践意义。通过解决这些问题,可以提升编程能力,特别是对于逻辑思维、问题分析和...

    Java和C的算法题

    1. **基础算法概念**:无论是Java还是C,理解基础的算法概念至关重要,如排序(冒泡排序、插入排序、快速排序、归并排序)、搜索(线性搜索、二分搜索)、图论(深度优先搜索、广度优先搜索)以及动态规划等。...

    Java经典算法四十题

    对于Java开发者来说,掌握一系列基础算法是提升个人技术水平的关键。本文将重点介绍Java中的四十个经典算法问题,它们覆盖了递归、素数判断、水仙花数和质因数分解等领域,是所有Java程序员学习和参考的宝贵资料。 ...

    JAVA经典算法50题.doc

    在给定的JAVA经典算法50题中,我们看到了几个典型的编程题目,涵盖了递归、素数判断和特定数字性质的检查。以下是这些程序的主要知识点: 1. **斐波那契数列**(Fibonacci Sequence): - 在程序1中,题目描述了一...

    Java经典算法50题——答案下载!

    在算法题中,数组常常被用来模拟问题场景或作为解决方案的基础。 2. 链表:链表是一种动态数据结构,每个元素(节点)包含数据和指向下一个节点的引用。单链表、双链表和环形链表都是常见的链表类型,在解决复杂...

Global site tag (gtag.js) - Google Analytics