我的经典算法

 1 public class exp2 {
 2     /**
 3      *  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
 4      *  小兔子长到第四个月后每个月又生一对兔子,
 5      *  假如兔子都不死,问每个月的兔子总数为多少?
 6      * @param args
 7      */
 8
 9     public static void main(String args[]) {
10         int i = 0;
11
12         for (i = 1; i <= 20; i++)
13             System.out.println(f(i));
14     }
15
16     public static int f(int x) {
17
18         if (x == 1 || x == 2)
19             return 1;
20         else
21             return f(x - 1) + f(x - 2);
22     }
23 }
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * @author 刘学 2014-7-22 下午3:40:12
 * @邮箱 [email protected]
 */
public class exp3 {

    /**求s=a+aa+aaa+aaaa+aa...a的值,
     * 其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        int i, j = 0;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("input a number:");
        i = Integer.parseInt(br.readLine());
        System.out.println("your number is " + i);
        for (int m=i; m>0; m--)
            for (int x = 0; x < m; x++) {
                j += i * Math.pow(10, x);
            }
        System.out.println("after count is " + j);
    }

}
 1 /**
 2  * @author 刘学 2014-7-22 下午4:17:04
 3  * @邮箱 [email protected]
 4  */
 5 public class exp4 {
 6
 7     /**
 8      * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半; 再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
 9      *
10      * @param args
11      */
12     public static void main(String[] args) {
13         // TODO Auto-generated method stub
14
15         double high = 100.00d, highCount = 0d;
16         for (int i = 1; i <= 10; i++)
17             highCount += countHigh(high, i);
18         System.out.println("共经过" + highCount + "米!");
19         System.out.println("第十次弹起" + countHigh(high, 10) + "米!");
20     }
21
22     public static double countHigh(double high, int times) {
23
24         if (times == 1) {
25             return 100;
26         }
27         return countHigh(high, times - 1) / 2;
28
29     }
30
31 }
 1 /**
 2  * @author 刘学 2014-7-22 下午4:17:04
 3  * @邮箱 [email protected]
 4  */
 5 public class exp5 {
 6
 7     /**题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
 8
 9       1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
10      * @param args
11      */
12     public static void main(String[] args) {
13         // TODO Auto-generated method stub
14         int count = 0;
15         for (int i = 1; i <= 4; i++)
16             for (int j = 1; j <= 4; j++)
17                 for (int k = 1; k <= 4; k++)
18                     if (i != j && i != k && j != k) {
19                         int result = 0;
20                         result = (int) (i * Math.pow(10, 0) + j
21                                 * Math.pow(10, 1) + k * Math.pow(10, 2));
22                         count++;
23                         System.out.println("第" + count + "个這樣的數是" + result);
24                     }
25         System.out.println("这样的数字共有" + count + "个。");
26     }
27 }
 1 /**
 2  * @author 刘学 2014-7-22 下午4:17:04
 3  * @邮箱 [email protected]
 4  */
 5 public class exp6 {
 6
 7     /**题目:一个整数,它加上100后是一个完全平方数,‘
 8      * 再加上168又是一个完全平方数,请问该数是多少?
 9      * 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,
10      * 如果开方后的结果满足如下条件,即是结果。请看具体分析:
11      * @param args
12      */
13     public static void main(String[] args) {
14         // TODO Auto-generated method stub
15         for (int i = 0; i < 1000; i++) {
16             for (int j = 0; j < 1000; j++) {
17                 for (int j2 = 0; j2 < 1000; j2++) {
18                     if((j+100 == i*i) && (j+268 == j2*j2)){
19                         System.out.println(j+"--"+i+"--"+j2);
20                     }
21                 }
22             }
23         }
24
25     }
26 }

我的经典算法

时间: 2024-10-09 08:33:49

我的经典算法的相关文章

数据挖掘十大经典算法

一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: 1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足: 2) 在树构造过程中进行剪枝: 3) 能够完成对连续属性的离散化处理: 4) 能够对不完整数据进行处理. C4.5算法有如下优点:产生的分类规则易于理解,准确率较高.其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导

动态展示十大经典算法

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序n个项目要Ο(nlogn)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divideandconquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1.从数列中挑出一个元素,称为“基准”(pivot),

数据挖掘领域十大经典算法初探

译者:July   二零一一年一月十五日 ----------------------------------------- 参考文献:国际权威的学术组织ICDM,于06年12月年评选出的数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.==============博主说明:1.原文献非最新文章,只是本人向来对算法比较敏感.感兴趣,便把原文细看了下,翻译过程中

【白话经典算法系列之十七】 数组中只出现一次的数 其他三次

本文地址:http://blog.csdn.net/morewindows/article/details/12684497转载请标明出处,谢谢. 欢迎关注微博:http://weibo.com/MoreWindows 首先看看题目要求: 数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次.请给出最快的方法找到x. 这个题目非常有意思,在本人博客中有<位操作基础篇之位操作全面总结>这篇文章介绍了使用位操作的异或来解决——数组中其他数字出现二次,而x出现一次,找出x.有<

三白话经典算法系列 Shell排序实现

山是包插入的精髓排序排序.这种方法,也被称为窄增量排序,因为DL.Shell至1959提出命名. 该方法的基本思想是:先将整个待排元素序列切割成若干个子序列(由相隔某个"增量"的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序. 由于直接插入排序在元素基本有序的情况下(接近最好情况),效率是非常高的,因此希尔排序在时间效率上比前两种方法有较大提高. 以n=10的一个数组49, 38, 65, 97

白话经典算法系列之四 直接选择排序及交换二个数据的正确实现

分类: 白话经典算法系列 2011-08-09 11:15 16682人阅读 评论(29) 收藏 举报 算法面试c 直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 设数组为a[0…n-1]. 1.      初始时,数组全为无序区为a[0..n-1].令i=0 2.      在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交

白话经典算法系列之七 堆与堆排序

堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先解说下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是全然二叉树或者是近似全然二叉树. 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值. 2.每一个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆). 当父结点的键值总是大于或等于不论什么一个子节点的键值时为最大堆.当父结点的键值总是小于或等于不论什么一个子节点的键值时为最小堆.下图展示一个最小堆

【从零学习经典算法系列】分治策略实例——二分查找

1.二分查找算法简介 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法.搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较.如果在某一步骤数组 为空,则代表找不到.这种搜索算法每一次比较都使搜索范围缩小一半.折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn). 二分查找的优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且

24点经典算法

1.概述 给定4个整数,当中每一个数字仅仅能使用一次:随意使用 + - * / ( ) ,构造出一个表达式,使得终于结果为24,这就是常见的算24点的游戏.这方面的程序非常多,一般都是穷举求解.本文介绍一种典型的算24点的程序算法,并给出两个详细的算24点的程序:一个是面向过程的C实现,一个是面向对象的java实现. 2.基本原理 基本原理是穷举4个整数全部可能的表达式,然后对表达式求值. 表达式的定义: expression = (expression|number) operator (ex

【转】聚类分析经典算法讲解及实现

本文将系统的讲解数据挖掘领域的经典聚类算法,并给予代码实现示例.虽然当下已有很多平台都集成了数据挖掘领域的经典算法模块,但笔者认为要深入理解算法的核心,剖析算法的执行过程,那么通过代码的实现及运行结果来进行算法的验证,这样的过程是很有必要的.因此本文,将有助于读者对经典聚类算法的深入学习与理解. 4 评论 杨 翔宇, 资深软件工程师, IBM 段 伟玮, 在读博士, IBM 2016 年 7 月 18 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 前言